2017-06-08 27 views
0

我是Google新手,嘗試學習它。TypeError:無法調用未定義的方法「getEmail」

我在我的一個google電子表格中執行以下代碼。我已經啓用了Admin Directory和Admin SDK,並且我還創建了一個OnEdit觸發器來授權腳本。但執行成績單仍然顯示此錯誤:

執行失敗:類型錯誤:無法調用的未定義「getEmail」。 (第10行,文件 「守則」)

1. function onEdit(e) { 
2. var sheet = e.source.getActiveSheet().getName(); 
3. if (sheet == "Sheet1") { 
4. var sheet1 = e.source.getSheetByName('Sheet1'); 
5. var range = e.range; 
6. var getCol = range.getColumn(); 
7. var getRow = range.getRow(); 
8. 
9. if (getCol == 1) { 
10.   var user = e.Session.getActiveUser().getEmail(); 
11.   var name = AdminDirectory.Users.get(user).name.fullName; // familyName, fullName or givenName 
12.   sheet1.getRange(getRow, 2).setValue(name); 
13.  var htmlEmail = "Cell " + range.getA1Notation() + 
14.   " edited by " + name; 
15.  GmailApp.sendEmail("----------", "Spreadsheet Update " + new Date(), "", { 
16.   htmlBody : htmlEmail 
17.  }); 
18.  } 
19. } 
20.} 
+0

不知道谷歌的腳本:你e.user沒有定義。所以拋出onEdit的元素不提供它。 – Compufreak

+0

你如何測試這個腳本? –

+0

@Compufreak我試圖通過這個鏈接提示來定義它:[link] https://developers.google.com/apps-script/reference/base/user#getEmail(),但它仍然不起作用。 – viv227295

回答

0

嘗試是這樣的,看看你得到的結果:https://developers.google.com/apps-script/reference/base/user#getEmail()

// Log the email address of the person running the script. 
 
Logger.log(Session.getActiveUser().getEmail());

+1

我已經訪問過那個鏈接。這不起作用。 – viv227295

+0

也許:如果安全策略不允許訪問用戶的電子郵件地址,則此方法返回空白字符串。 – OblongMedulla

+1

我是G Suite中域的所有者和管理員。我啓用了管理員目錄和Admin SDK,並給出了此腳本的所有授權....實際上,上面的代碼中似乎存在一些問題不幸的是,我無法弄清楚。 – viv227295

相關問題