2016-07-06 81 views
1

我已經在應用程序腳本中生成了以下代碼,以便用戶在Google電子表格中更改某些值時自動發送電子郵件,該工作正常。更改Google電子表格的所有者以發送包含應用程序腳本的電子郵件

我的問題是,現在我是這個谷歌電子表格的所有者,所以每個電子郵件都從我的Gmail帳戶發出。我只是想知道是否有可能更改發件人,以便每個電子郵件將從其他人的Gmail帳戶發送出去。我確實通過將所有者更改爲我的一位同事來進行測試,但它不起作用。即使Google電子表格的擁有者是其他人,我仍然會「發送」這些電子郵件。

我是否需要更改我的代碼?任何建議將不勝感激!謝謝!

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 = "[email protected]"; 
} 

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

};

回答

1

電子郵件將從腳本運行的權限下由帳戶發送。

我相信你的情況,這將是任何帳戶創建運行腳本的觸發器。腳本的所有者本身並不相關,因爲具有編輯權限的任何用戶都可以創建觸發器。

請注意,當新用戶創建觸發器時,他們還必須手動觸發腳本一次,以便他們可以對其進行授權。

+0

謝謝!它的工作,通過結合你的答案和user2970721的答案,我只是通過改變「執行」設置來測試它,並讓我的同事手動觸發腳本。 –

4

您必須調整「部署Web應用程序...」設置,以便應用程序腳本作爲「訪問Web應用程序的用戶」運行。此選項在「執行應用程序爲」設置下。

這將要求用戶授權應用程序使用他們的帳戶一次卡梅倫描述。

+0

謝謝!它的工作,我只是通過改變「執行」設置與我的同事進行測試,並讓我的同事手動觸發腳本。 –

相關問題