javascript - 如何向未注册用户显示警报窗口或提示
问题描述
我正在设置一个电子表格,其用户不一定有 Google 帐户,也不需要登录。
我想以 Browser
课堂上可能的两种方式与用户互动。一种是在弹出窗口中显示警报,以警告用户不要编辑字段。这是用Browser.msgBox
or ̀ 完成的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 表格上是不可能的。
解释
- 要运行绑定到电子表格的脚本,用户应该是该电子表格的编辑器。
- 简单触发器无法访问需要授权才能运行的服务。
- 当触发器由匿名用户触发时,会应用一些额外的限制。
笔记:
- 每种方法所需的授权范围都包含在每种方法的文档部分中。
- 匿名用户无法授权由可安装触发器运行的脚本,因为授权过程需要一个 usar 帐户来记录相应的授权。
有关详细信息,请参阅:
- https://developers.google.com/apps-script/guides/sheets
- https://developers.google.com/apps-script/guides/triggers
解决方法
仅使用 Google 表格无法实现所需的功能,但您可以
- 使用 Apps 脚本创建 Web 应用程序并在其中嵌入电子表格
- 使用另一个平台创建一个 Web 应用程序并在其中嵌入电子表格
推荐阅读
- c++ - 如何使用 QFileDialog 保存多个图像并提升
- php - 如何取消设置数组的值?
- c++ - 媒体基础视频重新编码产生音频流同步偏移
- reactjs - 当用户在 Animated React / React Native 中按住时如何缩放按钮的大小?
- r - 如何绘制 geom_col() 以使 y 轴以 1 而不是 0 为中心
- c++ - 我不知道如何用变量写平均成绩
- graph - 按日期获取连接到单个帐户节点的许多交易节点中的最新节点的有效方法
- rest - Powershell 发布 API 请求
- c# - 在没有核心的 2019 年创建编译查询的正确方法
- javascript - React-Spring:UseTransition 地图内的轨迹不起作用