根据用户响应显示另一个警报:OK或Cancel
Display another alert depending on user response: OK or Cancel
我有一个谷歌表,我已经设置了一个onEdit触发器弹出一个ui。编辑单元格时发出警报。然后,我想根据用户选择OK还是Cancel来执行一个操作。当我使用表单作为创建触发器和脚本的用户时,这一切都很好。如果我将工作表(具有编辑权限)共享给其他人,当他们编辑单元格时,脚本运行,但当他们单击"确定"或"取消"时,我无法获得响应。脚本就这样停止了。执行记录中没有显示任何内容,即使我输入了日志信息,也没有记录任何内容。
我整理了一个非常简单的代码示例,展示了第二个ui的问题。alert.
function myFunction() {
var ui = SpreadsheetApp.getUi()
var response = ui.alert('Test', 'Test', ui.ButtonSet.OK_CANCEL);
if (response.OK) {
ui.alert('OK');
}
}
触发器设置的截图在这里:
包含脚本的测试表的链接在这里:
https://docs.google.com/spreadsheets/d/1J16lpg9G1O8hQOxB-J1R4Oy0nsrxIkgWHBfaSl6bpVs/edit gid = 0
应该发生的是,您将首先编辑一个单元格ui。警报出现时,单击OK,然后单击第二个ui。警报出现。当你尝试第二个ui时,我希望发生的是。警报只是不发生。
建议吗?是权限问题吗?
您正在错误地比较响应。而不是
if (response.OK)
应该是
if (response == ui.Button.OK)
试一下:
var ui = SpreadsheetApp.getUi();
var response = ui.alert('test',test, ui.ButtonSet.OK_CANCEL);
if (response == ui.Button.OK) {
ui.alert('OK');
} else {
ui.alert('NOT OK')
}
--------评论后编辑-----
function onEdit(e) {
//FIXED FOR OTHER USERS IF THE FUNCTION DOESN'T NEED OTHER PERMISSIONS (simple trigger onEdit)
var ui = SpreadsheetApp.getUi()
var response = ui.alert('Test', 'Test', ui.ButtonSet.OK_CANCEL);
if (response == ui.Button.OK) {
ui.alert('OK');
} else {
ui.alert('NOT OK')
}
}
我也遇到了与BOUND脚本完全相同的问题。
我作为表的创建者/所有者没有任何问题。
当我与同一实例内的另一个用户共享文档时,初始Ui。警报显示,但他们的响应从来没有从警报返回,var结果没有得到设置,事实上,如果我添加一行后直接设置结果,它永远不会到达那里?
var result = ui.alert(
'Approve leave for ' + ApplicantName +' ?',
'An approval email will now be sent to ' + EmailAddress.toLowerCase() + ' do you want to continue ?',
ui.ButtonSet.YES_NO);
Logger.log('Leave approve popup selection = ' + result.toString());//this is not executed
我甚至尝试在try catch块中包装它,但一无所获!
Juan-Diego-Antezana
"…这来自于权利和应用权限,用户必须允许应用程序在他的账户上运行,即使其他用户有编辑工作表的权利。
你能进一步详细说明一下吗?因为这似乎与这个问题有关。
谢谢
- Dojo XHR将200 OK视为错误
- javascript confirm()ok和cancel返回相同的结果
- Angular Material$mdDialog.confirm;OK”;以及“;取消“;选项
- 是否可以将alertify.js的cancel按钮和onclose调用的操作分开
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- 获得readyState为4和状态200加上状态文本“0”;OK”;而成功函数仍然没有;我没有接到电话
- jQuery Ajax Codebehing Post是“;OK”;但是没有'不起作用
- 编写一个代码来拆分字符串“test”,并将Name的值分配给文本框,将ok的值分配到复选框
- 仅使用textbox方法和属性在confirm ok和cancel的代码隐藏中执行不同的代码
- 是John Resig的“Simple Javascript Inheritance”仍然OK
- 如何在 javascript 中自定义警报框的 ok 按钮之前重定向页面
- jQuery ajax:error 即使响应为 OK 200 也会运行
- Bootbox 4.1.0:如何将本地化字符串(如 Ok、Cancel)传递给 Bootbox 的确认
- 断言在页面对象中不可用?- 无法读取未定义的属性“ok”
- 使用 Cookie Ok for Mobile 将 POST 表单给自己
- $http获取逻辑以仅允许 200 OK
- javascript确认函数ok和cancel返回相同的结果
- 带有Ok/Cancel按钮的Sumoselect在点击离开后记住所选值
- Javascript警告框?如何在点击“ok”时创建事件?和“;cancel"
- 根据用户响应显示另一个警报:OK或Cancel