1

我已阅读Installable Triggers上的所有文档以及StackOverflow中的问题,但触发器根本无法根据安装程序的权限运行。他们根据谁在电子表格中进行修改的权限运行,从而触发grab_info谷歌脚本:如何使安装程序的权限下安装触发器功能?

根据文档:They run as the user who installed the trigger, not as the user triggering the event.

所以我一直手动删除触发器,重装,运行低于触发的创造者,然后重新加载电子表格。虽然仍然登录触发器工作正常,然后我注销后,触发器不起作用。它在当前用户下运行,而不是安装程序。

我做错了什么?

这里是我的下面创建触发器代码:

function add_trigger() { 

    ScriptApp.newTrigger('grab_info').forSpreadsheet(SpreadsheetApp.openById('blahblah')).onEdit().create(); 

} 

编辑:

这是当前出现错误的代码:

function grab_info(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var i = sheet.getActiveCell().getRow(); 
    var date = ss.getRange("C" + i); 
    var due_date = 'test'; 
    date.setValue(due_date); 
    } 
+0

我没有看到你的触发器在你没有登录的时候会停止工作的原因。它会继续在创建触发器的人的权限下运行(使用你的函数)。该规则适用于可安装触发器,无论它是如何创建的,手动或通过函数。 –

+0

是的,这很令人沮丧。我试图在会议中向我的老板展示这一点,并且所有触发器都被打破了。> _ < –

回答

1

我和你的卡耶塔诺有着相同的经历。安装触发器不会像文档声明的那样使用(触发器)安装程序的权限运行。谷歌已经知道这是自2012年3月以来的一个错误,在当时是GAS团队成员的Anton Soradoi给我的一封电子邮件中承认:

“您遇到的问题似乎是一个错误。我们目前正在调查 。我会尽快给你回复,我有 它。“

如果您还没有,请在问题跟踪器上提出有关它的问题this issue

感谢您的问题,因为它导致我由Serge Insas here (see Edit 3 in his answer)建议的潜在解决方法,我还没有尝试但似乎是一个好主意。手指交叉!

2

从你引用了相同的文档:

可安装的触发器rs与简单触发器有一些相似之处,但也存在以下差异:

它们可能无法确定哪个用户触发了正在处理的事件。对于时钟记号事件,这并不重要,但在电子表格编辑事件中,更改电子表格的用户不一定是可识别的。

因此,根据您的脚本中的内容以及需要哪些权限,可能会失败,因为用户无法识别。更改您的通知设置以获得即时反馈,因为生成的电子邮件会告诉您更多信息。

+0

基本上它只是说'我们很抱歉,发生服务器错误。'我大大简化了我的'grab_info'目前它在登录时写入'test',当我没有登录时,我收到一封错误邮件。 –

+0

这不是最有用的错误信息,真的没有指导。某些只写入表单的东西_应该适用于任何具有编辑权限的人员(当然),因此您可能会遇到临时故障。 – Mogsdad