«Требуется авторизация» и @OnlyCurrentDoc - PullRequest
0 голосов
/ 20 февраля 2020

Можете ли вы избежать «требуемой авторизации» в Google Sheet, если вызываемая функция находится в своем собственном файле сценария встроенных приложений, используя область действия @ OnlyCurrentDo c, а используемые методы действуют полностью локально для активного лист?

Вот суть: я хочу вызвать функцию из пользовательского меню в Google Sheet. Функция получает активный лист и вставляет новую строку сверху, с некоторыми предварительно заполненными значениями (относительно листа):

function addNewPO() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var data = sheet.getRange('PO Numbers!A3').getValue();
  var nextPONum = data+1;

  sheet.insertRowsBefore(3,1);  // This inserts a row after the first row  
  sheet.getRange('PO Numbers!A3').setValue(nextPONum);     // set next PO number
  sheet.getRange('PO Numbers!C3').setValue(new Date());    // set current date
  sheet.getRange('PO Numbers!B3').activate();              // set final focus
}

Кроме того, я помещаю строки @ OnlyCurrentDo c в в верхней части скрипта, чтобы сузить область действия:

 /**
 * @OnlyCurrentDoc
 */

Я хочу вызвать это из пользовательского меню:

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActive();
  var menuItems = [
    {name: 'add new PO...', functionName: 'addNewPO'}
  ];
  spreadsheet.addMenu('Purchase Orders', menuItems);
}

, но, как вы можете подозревать, он запрашивает «Требуется авторизация»

Я не был уверен, что «Требуется авторизация» - это предполетное требование для запуска любых сценариев вообще, или если с несколькими строчками ограничительного логика c это будет считается достаточно помещенным в песочницу, чтобы избежать явного разрешения его сильно локализованного поведения.

Спасибо!

1 Ответ

2 голосов
/ 20 февраля 2020

Сценарий требует авторизации для доступа к активной электронной таблице. Единственный способ сделать что-либо в текущем файле без какой-либо авторизации - это через простые триггеры : onOpen или onEdit или пользовательские функции. Любой прямой вызов функций скрипта через меню или иным образом требует авторизации и запуска потока авторизации. Вы можете использовать onEdit с флажком для запуска скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...