Скрипт листов Google не работает, если я не сделаю его копию - PullRequest
0 голосов
/ 15 января 2020

Как видно из заголовка, у меня есть скрипт, который сортирует столбец каждый раз, когда я вводю ключевое слово в ячейку. Но это работает только тогда, когда я делаю копию сценария. Когда я закрываю вкладку Google и снова открываю, она не будет работать каждый раз. Может кто-нибудь помочь мне с этим.

Код :

function onEdit(e) {
  if (e.range.getA1Notation() == 'A108') {
    if (/^\w+$/.test(e.value)) {        
      eval(e.value)();
      e.range.clear();
    }
  }
}

function SortbyName() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Main");
  var range = sheet.getRange("A3:102");
  range.sort(1);
}

function SortbyClass() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Main");
  var range = sheet.getRange("A3:102");
  range.sort(2);
}

function SortbyContri() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Main");
  var range = sheet.getRange("A3:102");
  range.sort(3);
}

Снимок экрана

1 Ответ

1 голос
/ 20 января 2020

Из полученной ошибки кажется, что ошибка, с которой вы столкнулись, связана с триггером onEdit.

Следовательно, вы можете внести следующие изменения:

var regEx= /^\w+$/;
if (e.value.match(regEx)) {        
      eval(e.value);
      e.range.clear();
}

Если вы хотите Чтобы использовать Регулярные выражения со Сценарием приложений, вам нужно использовать функцию .match(), или вы можете создать новый объект RegExp.

Но поскольку вы пытаетесь выполнить простую сортировку, вам не обязательно использовать регулярное выражение, вы можете попробовать это:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Main");
  var range = sheet.getRange("A3:17");
  if (e.range.getA1Notation() == 'A20') {
    if (e.value == "SortbyName" ) {        
      e.range.clear();
      range.sort(1);
    }
    else if (e.value == "SortbyClass" ) {        
      e.range.clear();
      range.sort(2);
    }
    else if (e.value == "SortbyContri") {        
      e.range.clear();
      range.sort(3);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...