首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有什么方法可以在Google脚本中识别用户吗?

有什么方法可以在Google脚本中识别用户吗?
EN

Web Applications用户
提问于 2017-05-25 00:54:50
回答 1查看 5.1K关注 0票数 1

我在Google中有一个电子表格,它与五个人共享。只编辑了几个列;所有其他列都被锁定。

我们需要跟踪这些可编辑列的更改,因此,基于这个答案,我在Apps脚本中添加了一个脚本,如下所示:

代码语言:javascript
运行
AI代码解释
复制
function onEdit() {
 if( s.getName() == "MySpecialSheet" ) { // Set to sheet name
   var r = s.getActiveCell();
   var col= r.getColumn();
   if( col == 3 ) { // Check the column
     var nextCell = r.offset(0, 1);

     var datetime = new Date();
     datetime = Utilities.formatDate(datetime, "GMT+9", "yyyy/MM/dd, hh:mm:ss"); // +9 for Tokyo
     nextCell.setValue(datetime);
   };
 };
}

这会自动插入编辑相关单元格的时间,这很好。但是,我也想添加一种方法来告诉谁编辑了这个单元格。

我在应用程序脚本文档中检查了用户类,但似乎唯一的方法是getEmail(),它:

在允许脚本未经用户授权而运行的任何上下文中都不可用,例如简单的onOpen(e)或onEdit(e)触发器、Google中的自定义函数或部署到“执行即我”(即由开发人员授权而不是用户授权)的web应用程序。

因为我的脚本使用onEdit(),所以我无法获得电子邮件地址。有没有办法获取任何类型的ID (我不需要电子邮件地址--可以是帐户的名称或号码),以便编辑一个单元格,然后将其插入另一个单元格中?

如果没有,我想我可以创建一个列,人们只需输入它们的首字母,但是人们往往会忘记,所以如果可能的话,我更喜欢自动化的解决方案。

EN

回答 1

Web Applications用户

回答已采纳

发布于 2018-01-24 00:40:19

我之前搜索过这个,发现这取决于你是否有私人账户或者是同一家公司的一部分。对于私人账户,这是不可能的,至少在我研究的时候是不可能的。我的解决办法是让每个人填写他/她的名字。

我在这里复制我的代码,您必须更改工作表的名称、行号等。

代码语言:javascript
运行
AI代码解释
复制
function onEdit(e) { 
 if (e.source.getActiveSheet().getName() !== 'adresseliste') return;
 if (e.range.columnStart < 1 || e.range.rowStart < 2) return;
 e.source.getActiveSheet().getRange(e.range.rowStart, 37)
        .setValue(Utilities.formatDate(new Date(), "GMT+2", "dd.MM.yyyy HH:mm"));
 var navn = Browser.inputBox('Hvem er du?');
 e.source.getActiveSheet().getRange(e.range.rowStart, 38)
    .setValue(navn);
 var why = Browser.inputBox('Hvorfor endret du?');  
 e.source.getActiveSheet().getRange(e.range.rowStart, 39)
    .setValue(why);
 }
票数 2
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/106379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档