google sheets电子邮件脚本不能被所有共享的人运行。

问题描述 投票:0回答:1

我有一个与其他人共享的谷歌表(我是所有者),在它有一个按钮链接到一个相应的捆绑脚本,给我发送电子邮件时,用户登录按该按钮(所以如果我点击按钮,我发送电子邮件给我)。

所有其他人都有 "编辑 "权限,但当他们点击按钮时,会出现一个错误,说不可能发送邮件(当我点击时,所有的工作都很完美)。

与其他人相关联的帐户与我的电子邮件域相同 (非gmail但与同一家公司有关)。)

这似乎是脚本有不同的权限,因为我没有问题,而其他人做。

正常情况下,在第一次他们点击按钮,他们(但也是我)不得不接受谷歌授权 "发送电子邮件,你"(作为当前帐户的头像登录)。

这是该按钮的代码。

'''

var sheet = SpreadsheetApp.getActiveSheet();
  var sel = sheet.getSelection();
  var sel_range = sel.getActiveRange();  
  var message = sel_range.getValues();

  // get task IDs
  var prev_values = sel.getNextDataRange(SpreadsheetApp.Direction.PREVIOUS).getValues(); 
  var cod_tickets = [];
  for (var k in prev_values){
    cod_tickets.push(prev_values[k][0]);
  } 

  var emailAddress = SpreadsheetApp.getActive().getSheetByName('Manager').getRange('I2').getValue();
  var subject = 'ticket ' + cod_tickets;
  MailApp.sendEmail(emailAddress, subject, message);

'''我说,他们发送电子邮件给我,因为 "emailAddress "变量将被填充的单元格的值,包含我的电子邮件地址.任何想法?

email google-apps-script google-sheets sharing
1个回答
0
投票

有一个看在文档 简单触发器的限制:

他们不能访问需要授权的服务。例如,一个简单的触发器 发不出邮件 因为Gmail服务需要授权,但一个简单的触发器就可以用语言服务翻译一个短语,这是匿名的。

解决方法是

使用一个 可安装扳机 而不是。

  • Edit->Current Project's trigger
  • 点击 +Add trigger
  • Select event type On edit.

你的函数不应该被命名为 onEdit否则,简单的和可安装的扳机都会同时开火,这可能会导致问题。

这个问题。

可安装的触发器将为每个用户触发, 但它将代表你,所以电子邮件将始终是你。

如果这是一个问题,你将需要使用一个 服务账户 将会 冒充 会话用户,这将使事情变得更加复杂。

© www.soinside.com 2019 - 2024. All rights reserved.