Метод onedit листов Google приводит к тому, что скрипт создает sh, что в противном случае сработало бы? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть два файла листов Google. Я хочу, чтобы флажок на втором листе был установлен в значение true, если флажок установлен на документе первого листа. У меня следующий код переходит к процедуре basi c.

function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var activeCell = ss.getActiveCell();
  if(activeCell.getColumn() == 1 && activeCell.getRow() == 2){ 
    myFunction() 
  }

}
function myFunction() {
       var ss_target =SpreadsheetApp.openById('####ID####');
       var Sheet = ss_target.getSheetByName('Sheet1');
       Sheet.getRange(1,1).setValue(true);

}

По какой-то причине код останавливается на следующей строке: var ss_target =SpreadsheetApp.openById('####ID####');

Интересно, если я Нарисуйте прямоугольник на листах Google и назначьте myFunction () для этого поля, когда я нажимаю на поле, код работает отлично. это только когда я пытаюсь запустить код с помощью триггера onedit. Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 05 февраля 2020

Вы должны сделать это устанавливаемым триггером, потому что простые триггеры не могут выполнять функции, которые требуют разрешения. Как изменение пользовательских данных.

function onMyEdit(e) {
  e.source.toast('Entry');
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet2' && e.range.columnStart==1 && e.range.rowStart==2){ 
    SpreadsheetApp.openById('tssid').getSheetByName('Sheet2').getRange('A1').setValue("TRUE");
  }
}

function makeTrigger() {
  var ss=SpreadsheetApp.getActive();
  ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...