2013-08-18 36 views
1

情況:

我有一個包含15個工作表和20個用戶的電子表格登錄和修改它。如何在使用Google腳本打開電子表格時發送提醒

我有下面的腳本應該發送一封電子郵件與打開電子表格的用戶電子郵件地址。

腳本功能所需:

  1. 發送電子郵件,當用戶打開電子表格。

問題:

Session.getEffectiveUser()只獲得了從腳本的所有者的電子郵件,而不是讓我的用戶的電子郵件。

自7月23日以來Session.getEffectiveUser()應該從用戶獲得重新自動化。我執行下面的註釋來重新批准腳本其他用戶Script and Google Account

測試用例:

這個腳本有一個觸發器,當有人打開等試算表。

function LoginShift(){ 
     var ss = SpreadsheetApp.getActiveSpreadsheet(); 
     MailApp.sendEmail("[email protected]", "Login Shift" , "Login UserName: " + Session.getEffectiveUser()); 
     } 
  1. 當我打開與腳本的所有者電子表格,同樣給我發了一封電子郵件,誰打開電子表格的電子郵件地址。
  2. 當我用不是腳本所有者的不同用戶打開電子表格時,腳本將運行併發送電子郵件,但使用所有者郵箱而不是打開電子表格的用戶的郵箱。

我有Session.getEffectiveuser()但onEdit的其他腳本,工作正常。我不知道爲什麼這個腳本沒有從getEffectiveUser獲取電子郵件地址。

+0

可能重複[谷歌腳本:如何知道什麼時候有人爲登錄或註銷從谷歌電子表格,並通過電子郵件提醒我(http://stackoverflow.com/questions/18292929/google-腳本如何對知識的時候,有人爲登錄或 - 註銷 - 從 - 谷歌電子表格-A) – mhawksey

回答

1

有如文檔中描述的一些特徵:

Understanding Triggers

...

安裝的觸發器

...

  • 打開電子表格或表格編輯器時。 (請注意,當用戶打開表單進行響應時,該觸發器不會激活,而是在編輯器打開表單進行修改時觸發。)與簡單的onOpen觸發器不同,可安裝的觸發器可以充當安裝觸發器的用戶。

...

你的問題提的行爲是根據文檔的預期。

UPDATE

如果你有簡單觸發器onInstallonOpenonEdit)如下:

function onOpen() { 
    Logger.log('getActiveUser(): ' + Session.getActiveUser()); 
    Logger.log('getEffectiveUser(): ' + Session.getEffectiveUser()); 
} 

當由所有者腳本的執行,其結果是如下:

getActiveUser(): owner_of_the_script 
getEffectiveUser(): owner_of_the_script 

當由另一個用戶(未腳本的所有者)執行時,結果如下:

getActiveUser(): 
getEffectiveUser(): user_activates_the_trigger 

重要:在documentation簡單觸發器的侷限性。

如果你有安裝的觸發如下,您添加功能到電子表格的事件onOpen

function myOnOpen() { 
    Logger.log('getActiveUser(): ' + Session.getActiveUser()); 
    Logger.log('getEffectiveUser(): ' + Session.getEffectiveUser()); 
} 

當由所有者腳本的執行,結果如下: :

getActiveUser(): owner_of_the_script 
getEffectiveUser(): owner_of_the_script 

當由另一個用戶(未腳本的所有者)執行,重SULT如下:

getActiveUser(): 
getEffectiveUser(): owner_of_the_script 
相關問題