我想使用 Google Web App 訪問 Web 應用程式創建者的 gmail。我還需要知道創建 Web 應用程式的用戶的姓名。我發現當您創建 Web 應用程式以供“任何人”使用時,就不可能使用 Session 獲取創建者的電子郵件:
function returnUser() {
var user = Session.getActiveUser().getEmail();
return ContentService.createTextOutput("User is " user)
}
function doGet(){
return returnUser();
}
當我在未登錄的情況下從瀏覽器呼叫此 Web 應用程式時,回傳的用戶為空白。
只是為了強調我對呼叫應用程式的用戶不感興趣。我想要腳本創建者的用戶電子郵件。
編輯:我發現我可以進入收件箱并計算前幾個執行緒中的郵件收件人。最常見的電子郵件可能是收件箱所有者。不完美但足夠好。如果您有更好的解決方案,請隨時使用。
//get user's email. When using web app Session.getActiveUser().getEmail() doesn't work
function getTo(){
console.log(Session.getActiveUser().getEmail())
var threads = GmailApp.search("to:me",0,10);
var counter = 0;
var recipients ={};
//get all message recipeints and count them into a JSON object.
threads.forEach((thread) =>{
var messages = thread.getMessages()
messages.forEach((message) =>{
var recipient = message.getTo();
if(recipients[recipient] == undefined) recipients[recipient] = 1;
else recipients[recipient] = recipients[recipient] 1;
})
})
//get most common key
var keys = Object.keys(recipients);
var max = 0;
var mostCommonEmail = '';
keys.forEach(key => {
if(recipients[key]>max) {
max=recipients[key];
mostCommonEmail = key;
}
})
return mostCommonEmail;
}
uj5u.com熱心網友回復:
在你的情況下,下面的修改如何?
從:
var user = Session.getActiveUser().getEmail();
到:
var user = Session.getEffectiveUser().getEmail();
筆記:
- 當您修改 Google Apps 腳本時,請將部署修改為新版本。這樣,修改后的腳本就會反映在 Web Apps 中。請注意這一點。
- 您可以在“重新部署 Web 應用程式而不更改新 IDE 的 Web 應用程式的 URL ”的報告中看到這方面的詳細資訊。
參考:
- getEffectiveUser()
uj5u.com熱心網友回復:
正如@Tanike 所提到的,您可能正在尋找getEffectiveUser(),如檔案所述:
如果腳本是設定為“以我的身份執行”(開發人員)的網路應用程式,則回傳開發人員的用戶帳戶。
使用 Apps 腳本 REST API
如果您想了解有關 Web 應用程式部署或專案的更多資訊,您始終可以使用Apps Script REST API。
例如,如果您想知道誰是某個腳本的創建者,您可以使用:
function restApiAS(){
let token = ScriptApp.getOAuthToken()
let projectId = ScriptApp.getScriptId()
let options = {headers: {"Authorization": "Bearer " token}}
let url_project = "https://script.googleapis.com/v1/projects/" projectId
let dataScript = UrlFetchApp.fetch(url_project, options)
Logger.log(dataScript)
return JSON.parse(dataScript).creator.email
}
要使用此功能,您必須更改與用戶管理的GCP 專案的關聯,啟用Apps 腳本 API,并將這些范圍添加到您的appsscript.json:
"oauthScopes": [
"https://www.googleapis.com/auth/script.projects",
"https://www.googleapis.com/auth/script.external_request",
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358792.html
標籤:谷歌应用程序脚本
