如果被调用的函数是自己内置的应用程序脚本文件,使用@OnlyCurrentDoc作用域,并且所使用的方法完全在活动表的本地执行,那么您能避免Google表上的“授权要求”吗?
下面是要点:我想从Google表上的自定义菜单中调用一个函数。该函数获取活动工作表,并在顶部插入一个新行,其中包含一些预先填充的值(相对于工作表):
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
}另外,我将@OnlyCurrentDoc行放在脚本的顶部,以缩小范围:
/**
* @OnlyCurrentDoc
*/我想从一个自定义菜单中调用这个命令:
function onOpen() {
var spreadsheet = SpreadsheetApp.getActive();
var menuItems = [
{name: 'add new PO...', functionName: 'addNewPO'}
];
spreadsheet.addMenu('Purchase Orders', menuItems);
}但正如您可能怀疑的,它提示“授权是必需的”
我不确定“授权所需”是否是运行任何脚本的飞行前要求,或者如果再加上几行限制性逻辑,就会被认为是沙箱,以避免明确授权其高度本地化的行为。
谢谢!
发布于 2020-02-20 20:40:27
脚本需要授权才能访问活动电子表格。在没有任何授权的情况下在当前文件中进行操作的唯一方法是通过简单触发器:onOpen或onEdit或自定义函数。通过菜单或其他方式对脚本函数的任何直接调用都需要授权并触发auth流。您可以通过复选框利用onEdit触发脚本。
https://stackoverflow.com/questions/60328033
复制相似问题