Google apps script 对其他用户更新外部工作表的自定义OneEdit函数失败,但仅在使用inputBox时失败
我无法解释原因。我有一个小谷歌表,我复制给我的妻子,让她使用。她的版本有脚本来更新我的工作表(如果它检测到缺少值) 我编写了一个自定义的onEdit()函数,该函数被称为via。我已经确认她可以编辑我的工作表:打开它并手动编辑,手动运行脚本,或者注释输入框并用静态值替换它 如果出现以下情况,则不会进行更新: *她从代码->运行菜单手动触发自定义编辑功能 *我修改代码以注释掉inputBox并使用静态值 简化代码:Google apps script 对其他用户更新外部工作表的自定义OneEdit函数失败,但仅在使用inputBox时失败,google-apps-script,inputbox,Google Apps Script,Inputbox,我无法解释原因。我有一个小谷歌表,我复制给我的妻子,让她使用。她的版本有脚本来更新我的工作表(如果它检测到缺少值) 我编写了一个自定义的onEdit()函数,该函数被称为via。我已经确认她可以编辑我的工作表:打开它并手动编辑,手动运行脚本,或者注释输入框并用静态值替换它 如果出现以下情况,则不会进行更新: *她从代码->运行菜单手动触发自定义编辑功能 *我修改代码以注释掉inputBox并使用静态值 简化代码: function custom_onEdit(){ var sheet =
function custom_onEdit(){
var sheet = SpreadsheetApp.getActiveSheet(),
range = sheet.getActiveRange(),
col = range.getColumn(),
row = range.getRow(),
value = range.getValue();
if (value != "" && sheet.getRange(row,col+1).getValue() === ""){
Dialog(value);
}
}
function Dialog(v){
var sheet = SpreadsheetApp.getActiveSheet(),
result;
result = Browser.inputBox('Populate the value required',Browser.Buttons.OK_CANCEL);
if (result != 'cancel'){
UpdateExternalSS(result,sheet.getName());
}
}
function UpdateExternalSS(value, name){
sheet = SpreadsheetApp.openById('abcd1234').getSheetByName(name);
sheet.getRange('A1').setValue(value);
}
如果我注释掉对Browser.inputBox的调用并添加:
//var result = Browser.inputBox('Populate the value required',Browser.Buttons.OK_CANCEL);
var result = '9999';
它很好用
(编辑)-更多阅读-似乎是我安装的可安装触发器实际上作为我的帐户运行,因此它不运行的原因应该是零(我是这两个电子表格的所有者)
可安装触发器总是在创建它们的人的帐户下运行。例如,如果您创建了一个可安装的打开触发器,它将在您的同事打开文档时运行(如果您的同事具有编辑权限),但它将作为您的帐户运行
这是谷歌应用程序脚本中的一个老错误
另外,我建议使用由触发器运行的in脚本,它直接向脚本提供活动范围和输入的值 这应该是对上述答案的更新。我使用Browser.msgBox调用为我的电子表格创建了一个和一个编辑脚本,在我知道它不应该工作之前。它们对于简单的评论和对是非问题的回答都是正确的。使用Browser.inputBox调用时失败。那就是我找到上述答案的时候。在这种情况下,脚本在遇到inputBox调用时简单地退出。我测试了与另一个用户共享电子表格的脚本,发现msgBox调用仍然可以正常工作,这与前面答案中的报告不同。只是inputBox调用不起作用