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

时间:2016-07-06 18:52:37

标签: google-chrome google-apps-script google-sheets

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

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

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

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 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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

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