为什么我的Google电子表格脚本没有在getUser()上捕获电子邮件?
问题描述:
我正在Google表格中编写我的第一个Google应用程序脚本,并对它打开的可能性感到非常兴奋。但是,我仍然试图弄清楚一些事情:例如在电子表格的不同选项卡之间以及跨独立电子表格(使用不同的电子表格ID)移动数据:有人可以建议如何做到这一点吗?为什么我的Google电子表格脚本没有在getUser()上捕获电子邮件?
但我的直接关注是,我的脚本捕获时间戳,但我也希望它记录用户的电子邮件。我在文档中看到,有一个复杂的标准决定了为什么可以捕获电子邮件 - 这个标准是什么?因为最初测试代码时奇怪,我自己的电子邮件被捕获,但只有约50%的案例。我不确定我完全理解这里发生了什么?
我的代码:
function onEdit(e){
// Set a comment on the edited cell to indicate when it was changed.
var range = e.range;
var activeSheet = e.source.getActiveSheet();
range.setNote('Last modified: ' + new Date() + new Date().toLocaleTimeString() + ' sheet: ' + activeSheet.getName());
if (activeSheet.getName() == "KYCEntrySheet"){
var r = e.source.getActiveCell();
if(r.getColumn() == 10) { //Any changes within this column set the date below and the email on the 2nd call
//if(r.offset(0, 1).getValue() === '') //is empty?
r.offset(0, 5).setValue(new Date().toLocaleTimeString());//will only put date, format "123/Date and time" if time needed
//if(r.offset(0, 2).getValue() === '') //is empty?
r.offset(0, 9).setValue(Session.getUser());//inserts current users email
}}}
谢谢!
答
您无法获得未明确允许您知道其电子邮件的用户的电子邮件。例如,假设某人共享一个电子表格供所有人编辑,并使用onEdit
触发器无形地收集他们的电子邮件。谷歌不允许发生这样的事情。
谷歌不想告诉我们“复杂的标准”是什么,所以我们不知道。据我的理解,一个简单的触发器onEdit
不应该访问任何人的个人信息,甚至你的。可安装的触发器(通过资源菜单创建的触发器)可以访问您的个人信息,但不能访问其他人。你可能混淆了这两者。电子表格
使用getSheetByName()
的不同选项卡之间
移动数据得到处理您要在纸张上,选择有一个范围,并使用
source.copyTo(target)
来复制数据。跨越独立的电子表格(具有不同的电子表格IDS)
使用
range.getValues()
在源电子表格和target.setValues()
在目标电子表格。你需要SpreadsheetApp.openById
来处理后者。