我正在设置一个电子表格,其用户不一定拥有 Google 帐户,也不应要求登录。
我希望通过 Browser
类可以通过两种方式与用户交互。一种是在弹出窗口中显示警报,以警告用户不要编辑字段。这是通过 Browser.msgBox
或 ̀ui.alert
完成的。第二件事是在窗口中请求输入,这可以通过 Browser.inputBox()
很好地完成。
虽然我的代码在我以所有者身份登录时工作正常,但在由未注册用户编辑时毫无用处。
我可以让这些功能对未注册的用户起作用吗?如果可以,如何做?
否则,是否有解决方法来实现类似的功能?
这是我所做的一个最小示例:
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSheet();
var eventRange = event.range;
var eventRow = eventRange.getRow();
var eventCol = eventRange.getColumn();
if(eventCol == 1){
protectDateField(ss, eventRow, eventCol)
}
}
function protectDateField(ss, eventRow, eventCol){
var ui = SpreadsheetApp.getUi();
ui.alert("Do Not Edit This Field!");
ss.getRange(eventRow,eventCol).clearContent();
}
最佳答案
简短回答
您想要做的事情在 Google 表格上是不可能的。
说明
- 要运行绑定(bind)到电子表格的脚本,用户应该是该电子表格的编辑者。
- 简单触发器无法访问需要授权才能运行的服务。
- 当触发器由匿名用户触发时,适用一些附加限制。
注释:
- 每种方法所需的授权范围均包含在每种方法的文档部分中。
- 匿名用户无法授权可安装触发器运行脚本,因为授权过程需要 usr 帐户来记录相应的授权。
更多详情请参阅:
- https://developers.google.com/apps-script/guides/sheets
- https://developers.google.com/apps-script/guides/triggers
解决方法
仅使用 Google 表格无法实现所需的功能,但您可以
- 使用 Apps 脚本创建网络应用并在其中嵌入电子表格
- 使用其他平台创建网络应用并嵌入电子表格
关于javascript - 如何向未注册用户显示警报窗口或提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52746398/