Можете ли вы избежать «требуемой авторизации» в 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 это будет считается достаточно помещенным в песочницу, чтобы избежать явного разрешения его сильно локализованного поведения.
Спасибо!