我在特定电子表格上有一个谷歌应用程序脚本,我已经允许我从我的帐户写一封电子邮件。其他一些人有编辑'也可以访问电子表格。我想知道是否有任何办法让我阻止那些人编辑'从修改我的脚本和从帐户发送胭脂电子邮件访问?
我探讨了以下选项:
下面您可以看到我的脚本示例,该脚本是在电子表格内编辑时触发的。
function onEditTrigger(e)
{
var row = e.range.rowStart;
var column=e.range.columnStart;
if (row==1 && column ==1)
{
GmailApp.sendEmail("xxx@gmail.com","Subject","Email content");
}
}

我想要做的是在有人编辑A1单元格时从我的帐户发送电子邮件。但我想控制从我的邮箱发送的内容。目前,任何可以编辑工作表的人都可以编辑从邮箱发送的电子邮件,这是我不喜欢的。
我是否可以限制用户,以便他们无法通过利用我最初提供的电子邮件权限来编辑帐户中的电子邮件内容。
编辑:235325 为了清楚起见,我并不担心代码的正常运行。我只是想要一种保护脚本的方法,以便有人在编辑'电子表格的权限不应该能够编辑我的脚本以发送他/她想要的任何电子邮件。
答案 0 :(得分:3)
通过创建未绑定脚本并调用以下全局变量来隔离代码:
var ss = SpreadsheetApp.openById("yourSheetIdHere");
var sheet = ss.getSheetByName("sheetName");
/* do more stuff */
这样,您就是运行脚本的唯一用户来发送电子邮件。当脚本未绑定时,它始终以您的身份运行,并且无法由没有编辑权限的人打开。但是,您需要创建一个监视工作表的触发器。 From the Google Apps docs:
function createSpreadsheetEditTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('myFunction')
.forSpreadsheet(ss)
.onEdit()
.create();
}
然后,为了确保没有人弄乱您的电子邮件,您可以使用Session.getActiveUser()
中的一条路线中的一条路线。
方法一 - 以活跃用户身份发送电子邮件。
这很简单 - 使用email
设置Session.getActiveUser().getEmail()
变量并将其传递到GmailApp
方法中。这将设置要从工作表编辑器发送的电子邮件地址。
方法二 - 验证尝试运行该功能的用户。
您还可以在脚本中将经过身份验证的用户存储在数组中。使用Session.getActiveUser().getEmail()
并检查该数组是否包含电子邮件地址。如果是,请从身份验证器功能return true
继续。如果没有,请传递错误消息。
答案 1 :(得分:0)
还有一种方法可以保护您的代码。
GET
或POST
发送数据。通过这种方式,您可以控制代码和电子邮件内容。