课程会话在某些 Google 电子表格中不起作用
Class Session not working in some Google spreadsheets
我在谷歌应用套件中的类会话有问题
我编写了一个脚本,用于记录在电子表格中编辑工作表的日期和用户。它适用于我的测试页面,但是当我将其放入另一个电子表格(名为"test"的副本)时,它不起作用!!我有 8 个电子表格,具有相同数量的工作表,所有工作表的名称都相似,并且该脚本仅适用于其中一个电子表格(和测试)。这是脚本:
function onEdit(event)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Last Session record
var actSht = event.source.getSheetByName("somepage")
var actRng = event.source.getActiveRange();
var lastCell0 = actSht.getRange(2,16);
var lastCell1 = actSht.getRange(2,17);
var date = Utilities.formatDate(new Date(), "GMT-6", "dd/MM/yyyy HH:mm");
var r= actSht.getActiveCell().getRow();
lastCell0.setValue("Date_Mod");
lastCell1.setValue("user");
if(r=='3'){
actSht.getRange(r,17).setValue(Session.getEffectiveUser());
actSht.getRange(r,16).setValue(date);
}
if(r=='4'){
actSht.getRange(r,17).setValue(Session.getEffectiveUser());
actSht.getRange(r,16).setValue(date);
}
}
这是两个电子表格的相同代码,一个电子表格工作正常,另一个
电子表格不起作用。我该如何解决这个问题?
这很可能是一个安全问题,由于简单的触发器限制,应该在简单的触发器中避免会话调用(查看 https://developers.google.com/apps-script/guides/triggers/#restrictions,特别是关于非常模糊的第 5 个项目符号点 - "他们可能无法确定当前用户的身份"(页面上的错误)以及链接将您发送回会话页面的位置)。在您的情况下,我想知道它是否仅适用于共享您的域名的用户。
如果您查看 https://developers.google.com/apps-script/reference/base/session#getEffectiveUser(),则没有简单触发器的参考(对我来说已经很可疑了),但是关于可安装触发器的声明告诉我,它可能不应该在简单的触发器中使用。
我自己刚刚经历了类似的练习,当脚本所有者的域与启动脚本的人的域不匹配时,getActiveUser 和 getEffectiveUser 都返回空白(换句话说,当有人在域外共享脚本并使用不同的用户名(例如他们的个人 Google 帐户)运行它时,就会发生这种情况)。因此,我创建了一个可安装的触发器,它调用getEffectiveUser并且现在可以工作了(请注意,如果您以编程方式而不是通过资源>当前项目的触发器定义可安装触发器,请确保触发器函数位于调用脚本文件中)。
希望这有帮助。
- Google电子表格getValue([cell containing ])不返回制表符
- 使用公共API访问(无OAuth)从JavaScript编写Google电子表格
- 时间驱动触发器在 Google 电子表格中不起作用
- jQuery检查自定义Google电子表格页面上输入和下拉列表的更改
- 评估作为参数传递给 Google 电子表格中自定义函数的条件
- 将Google电子表格转换为HTML表格
- 使用循环返回嵌套的json值(google电子表格)
- 设置“;将标签视为文本“;通过脚本将Google电子表格图表的值设置为true
- 如何更改编辑单元格上方单元格的背景颜色(Javascript、Google电子表格)
- 使用Javascript和html从Google电子表格中填充html代码
- Google 电子表格脚本 - 仅授予对一张工作表的访问权限
- 监控 Google 电子表格单元格值并撤消不需要的更改
- 课程会话在某些 Google 电子表格中不起作用
- Google 电子表格:如何使用 Google Apps 脚本命名范围
- Google 电子表格脚本 getValues - 强制使用 int 而不是字符串
- Angular 将 Json 传递给 google 电子表格 getPost 抛出 e = undefined
- 将“加载更多”添加到从Google电子表格中通过$.getJSON接收的数据输出中
- 在 Google 电子表格数据库中以编程方式监视编辑
- 使用脚本中的数据,通过各种形式或提醒框修改 Google 电子表格中的数据
- 基于 Google 电子表格中公式更改的电子邮件脚本代码