我有一个电子表格,可以通过App Script在基于时间的触发器上从API获取数据,其他用户可以复制这些数据以查看自己的数据(数千人正在使用它)。该脚本非常简单,它通过UrlFetchApp.fetch()获取数据并将其放入电子表格中,并且它具有一个人们可以在首次复制电子表格后调用以设置基于时间的触发器的功能(触发器不能被复制)。
几个月前,在授权App脚本运行时,制作副本的用户面临“此应用未经验证”屏幕。我知道这是由于谷歌改变了安全性,但我无法找到一种方法来正确摆脱未经验证的状态。这就是我试过的:
@OnlyCurrentDoc
添加到电子表格的顶部。这在技术上有效,但只添加@OnlyCurrentDoc
会导致脚本的运行时间从4秒增加到180秒。可以在https://wowaudit.com/copy处制作电子表格的副本,这是触发“未经验证的应用”消息的脚本代码,并且需要花费更长的时间来添加@OnlyCurrentDoc
代码段:
/**
* @OnlyCurrentDoc
*/
function CreateTrigger() {
// First delete old triggers
var allTriggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < allTriggers.length; i++) {
ScriptApp.deleteTrigger(allTriggers[i]);
}
// Then create new triggers
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var interval = sheet.getRange("RefreshSetting").getValue().slice(0,2);
ScriptApp.newTrigger("Fetch").timeBased().everyMinutes(interval).create();
ScriptApp.newTrigger("Refresh").forSpreadsheet(sheet).onEdit().create();
// Then give user feedback of success
if (ScriptApp.getProjectTriggers().length == 2) {
sheet.getRange('Settings!B24').setValue('The sheet is automatically refreshing!');
sheet.getRange('Settings!B24').setBackground('#b6d7a8');
} else {
sheet.getRange('Settings!B24').setValue('Click here to start automatic refreshing!');
sheet.getRange('Settings!B24').setBackground('#ea9999');
}
}
有没有人知道一种方法可以阻止“未验证的应用程序”消息出现在我的场景中,或者为什么@OnlyCurrentDoc
标志会使脚本放慢速度(基本上使其无法使用)?
感谢您的帮助!
答案 0 :(得分:1)
这是您测试应用时的预期行为。如果您想要删除此消息,您可以: