更改Google电子表格的所有者,以便使用应用脚本发送电子邮件

我已在应用脚本中生成以下代码,以便在用户更改谷歌电子表格中的某些值时自动发送电子邮件,这样可以正常工作 .

我的问题是,现在我是这个谷歌电子表格的所有者,所以每封电子邮件都是从我的Gmail帐户发出的 . 我只是想知道是否有可能 change the sender 以便每封电子邮件将从其他人的Gmail帐户发送出去 . 我通过将所有者更改为我的一位同事来测试它,但它无法正常工作 . 即使谷歌电子表格的所有者是其他人,我仍然是"sending"这些电子邮件 .

我需要更改我的代码吗?任何建议将不胜感激!谢谢!

function PODTool() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0];

var sheet = spreadsheet.getActiveSheet();
var lastRow = sheet.getLastRow();

var startRow = 2;

var range = sheet.getRange(2,7,lastRow-startRow+1,1 );
var numRows = range.getNumRows();
var LinksToPODForm = range.getValues();

var rangeColumnReadyToSendEmail =sheet.getRange(2,9,lastRow-startRow+1,1);
var sendEmailOrNot = rangeColumnReadyToSendEmail.getValues();


var warning_count = 0;
var msg = "";

// Loop over the values 
for (var i = 0; i <= numRows - 1; i++) {
var EachLinkValue = LinksToPODForm[i][0];


if (EachSendEmailOrNotValue=="yes" && sheet.getRange(i+2,10).getValue()=='Email not Sent' &&EachEmailRecipient=="Someone"){
var BillingOfLadingShowingInEmailNotification = Billing_of_lading_number[i][0];


msg = msg +"Requester:       "+EachEmailRecipient+"
warning_count++;
var subject ="Billing of Lading: "+BillingOfLadingShowingInEmailNotification;
  sheet.getRange(i+2,10).setValue('Sent');
var recipient = "xxx@gmail.com";
}

if(warning_count) {
  MailApp.sendEmail(recipient, subject,msg)
}

};

回答(2)

2 years ago

电子邮件将从脚本运行权限下的帐户发送 .

我相信你的情况,那就是创建运行脚本的触发器的任何帐户 . 脚本本身的所有者不相关,因为具有编辑权限的任何用户都可以创建触发器 .

请注意,当新用户创建触发器时,他们还必须手动触发脚本一次,以便他们可以对其进行授权 .

2 years ago

您必须调整“部署Web应用程序...”设置,以便应用程序脚本作为“用户访问Web应用程序”运行 . 此选项位于“将应用程序执行为”设置下 .

这将要求用户授权应用程序使用其帐户一次,如Cameron所述 .