Гугл скрипт, функция onEdit вдруг не работает, как исправить? - PullRequest
1 голос
/ 19 марта 2019

У меня есть функция onEdit в электронной таблице, которую мне нужно скопировать в другую электронную таблицу, где другая электронная таблица является идентичной копией с тем же именем листа. Это работало отлично в последний раз, когда я проверял, но это было пару дней назад, и теперь оно только что остановилось.

Код:

function onEdit(e){
//  Logger.log("working so far 1");
//  mainfile();
  Logger.log("working so far 4");
//  var ss=SpreadsheetApp.openById(mainssid);
  var ss=SpreadsheetApp.openById("Sheet ID");
  var sh=ss.getSheetByName(e.range.getSheet().getName());
  var rg=sh.getRange(e.range.rowStart,e.range.columnStart);
  rg.setValue(e.value);
} 


function mainfile(){
  Logger.log("working so far 2");
  var SSID = SpreadsheetApp.getActiveSpreadsheet().getId();
  var folder = DriveApp.getFileById(SSID).getParents().next().getName();
  var files = DriveApp.getFoldersByName(folder).next().getFiles();
  var array = [];
  while (files.hasNext()) {
    var file = files.next();
    array.unshift(file.getName());
  }
  array.sort();
  var mainss = array[0];
  var mainssid = DriveApp.getFilesByName(mainss).next().getId();
  Logger.log(mainssid);
  Logger.log("working so far 3");
}

Что бы я сделал, функция mainfile просто возвращает мне идентификатор конкретного файла, и закомментированные разделы были именно там, где я пытался внедрить это в функцию onEdit. Таким образом, ожидаемый результат для меня состоит в том, чтобы внести изменения в одну электронную таблицу, и такое же изменение произойдет в другой электронной таблице, и в журнале будет указано Woriking для чисел 2,3,4, но ничего не появляется.

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

Это не копия другого поста, потому что я не пытаюсь отправить электронное письмо. Я посмотрел на руководство по простым триггерам и не могу понять, что не так с этим кодом, так как он не запрашивает разрешения для нормальной работы функции, поэтому я не думаю, что мне нужна авторизация для ее запуска Я знаю, что он может изменять другие файлы, потому что раньше он работал, и у меня он работал сегодня, он не работает дольше 30 секунд, и я не превысил квоту. ни один из других, кажется, не применяется. Пожалуйста, вы можете объяснить мне, что я делаю неправильно, потому что я не понимаю.

Я также заменил идентификатор листа на идентификатор листа. все кредиты для кода onEdit () идут в Cooper.

Заранее спасибо, извините за напыщенную речь.

1 Ответ

0 голосов
/ 19 марта 2019

Простые триггеры не могут выполнять действия, требующие авторизации.

Restrictions
Because simple triggers fire automatically, without asking the user for authorization, they are subject to several restrictions:

The script must be bound to a Google Sheets, Slides, Docs, or Forms file, or else be an add-on that extends one of those applications.
They do not run if a file is opened in read-only (view or comment) mode.
Script executions and API requests do not cause triggers to run. For example, calling Range.setValue() to edit a cell does not cause the spreadsheet's onEdit trigger to run.
They cannot access services that require authorization. For example, a simple trigger cannot send an email because the Gmail service requires authorization, but a simple trigger can translate a phrase with the Language service, which is anonymous.
They can modify the file they are bound to, but cannot access other files because that would require authorization.
They may or may not be able to determine the identity of the current user, depending on a complex set of security restrictions.
They cannot run for longer than 30 seconds.
In certain circumstances, editor add-ons run their onOpen(e) and onEdit(e) simple triggers in a no-authorization mode that presents some additional complications. For more information, see the guide to the add-on authorization lifecycle.
Simple triggers are subject to Apps Script trigger quota limits.
These restrictions do not apply to doGet(e) or doPost(e).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...