我已在应用脚本中生成以下代码,以便在用户更改谷歌电子表格中的某些值时自动发送电子邮件,这样可以正常工作 .
我的问题是,现在我是这个谷歌电子表格的所有者,所以每封电子邮件都是从我的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 回答
电子邮件将从脚本运行权限下的帐户发送 .
我相信你的情况,那就是创建运行脚本的触发器的任何帐户 . 脚本本身的所有者不相关,因为具有编辑权限的任何用户都可以创建触发器 .
请注意,当新用户创建触发器时,他们还必须手动触发脚本一次,以便他们可以对其进行授权 .
您必须调整“部署Web应用程序...”设置,以便应用程序脚本作为“用户访问Web应用程序”运行 . 此选项位于“将应用程序执行为”设置下 .
这将要求用户授权应用程序使用其帐户一次,如Cameron所述 .