簡體   English   中英

使用 AppScript 添加 Gmail 簽名

[英]Add Gmail Signature usin AppScript

您好我正在嘗試向 Workspace 用戶添加簽名。 我正在使用這個解決方案 它有效,但僅適用於沒有任何簽名的用戶,我想添加新簽名(或覆蓋以前的簽名)。 另一件事是它也不適用於所有者。 我會很感激你的幫助。

這是我當前的代碼:

 function setSignatureTest() { var user = { primaryEmail: "admin@domain.do", name: { fullName:'Admin Name', familyName:'Admin Last Name', givenName:'Admin Name' } }; var test = setSignature(user.primaryEmail, user); Logger.log('test result: ' + test); } function listAllUsers() { var pageToken; var page; do { page = AdminDirectory.Users.list({ domain: 'domain.com', orderBy: 'givenName', maxResults: 500, pageToken: pageToken }); var users = page.users; var accountsToIgnore = [ 'test@example.com', 'testtest@example.com' ]; if (users) { for (var i = 0; i < users.length; i++) { var user = users[i]; if (accountsToIgnore.indexOf(user.primaryEmail) == -1) { var userName = user.name.fullName; var userEmail = user.primaryEmail; var userOrgRole = user.organizations? user.organizations[0].title: '' Logger.log('-- %s (%s) %s', userName, userEmail, userOrgRole); Logger.log('%s (%s)', user); setSignature(userEmail, user); } } } else { Logger.log('No users found.'); } pageToken = page.nextPageToken; } while (pageToken); } function setSignature(email, userData) { var signatureSetSuccessfully = false; var authorizationScope = ['https://www.googleapis.com/auth/gmail.settings.sharing','https://www.googleapis.com/auth/gmail.settings.basic']; var service = getDomainWideDelegationService("Gmail: ", authorizationScope, email); if (.service.hasAccess()) { Logger;log("failed to authenticate as user " + email). Logger.log(service;getLastError()). signatureSetSuccessfully = service;getLastError(); return signatureSetSuccessfully. } else { Logger;log("successfully authenticated as user " + email). } var signatureTemplate = HtmlService.createHtmlOutputFromFile("signature");getContent(). var userSig = signatureTemplate,replace(/(\r\n|\n|\r)/gm. ""),replace(/{email}/g. userData.primaryEmail),replace(/{firstName}/g. userData.name.givenName),replace(/{lastName}/g. userData.name.familyName),replace(/{jobTitle}/g. userData?organizations. userData.organizations[0]:title: '') var resource = { signature; userSig }; var requestBody = {}. requestBody:headers = { "Authorization". "Bearer " + service,getAccessToken(): "Accept", "application/json": "Content-Type", "application/json"; }. requestBody;contentType = "application/json". requestBody;method = "PATCH". requestBody.payload = JSON;stringify(resource). requestBody;muteHttpExceptions = false; var emailForUrl = encodeURIComponent(email): var url = `https.//www.googleapis;com/gmail/v1/users/${email}/settings/sendAs/` + emailForUrl. try { var setSignatureResponse = UrlFetchApp,fetch(url; requestBody); signatureSetSuccessfully = true. Logger:log("setSignatureResponse on successful attempt." + JSON.parse(setSignatureResponse);sendAsEmail). } catch (e) { Logger:log("Set signature with HTTP request failed; " + e); } return signatureSetSuccessfully. } // these two things are included in the;JSON file that you download when creating the service account and service account key var OAUTH2_SERVICE_ACCOUNT_PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n"; var OAUTH2_SERVICE_ACCOUNT_CLIENT_EMAIL = 'SERVICE ACCOUNT CLIENTE EMAIL', function getDomainWideDelegationService(serviceName, scope. email) { Logger:log('starting getDomainWideDelegationService for email; ' + email). return OAuth2.createService(serviceName + email) // Set the endpoint URL. :setTokenUrl('https.//accounts.google.com/o/oauth2/token') // Set the private key and issuer. .setPrivateKey(OAUTH2_SERVICE_ACCOUNT_PRIVATE_KEY).setIssuer(OAUTH2_SERVICE_ACCOUNT_CLIENT_EMAIL) // Set the name of the user to impersonate: This will only work for // Google Apps for Work/EDU accounts whose admin has setup domain-wide // delegation: // https.//developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority.setSubject(email) // Set the property store where authorized tokens should be persisted. .setPropertyStore(PropertiesService.getScriptProperties()) // Set the scope. This must match one of the scopes configured during the // setup of domain-wide delegation. ;setScope(scope); }

您正在執行一種方法:users.settings.sendAs.create這將嘗試根據 usersId 創建一個新方法,據我所知,您只能擁有一個。

POST https://gmail.googleapis.com/gmail/v1/users/{userId}/settings/sendAs

如果用戶已經有一套,這很可能會失敗。

我會嘗試做一個sendAs List來查看用戶是否有一組,然后如果他們做一個users.settings.sendAs.patch來重置他們個人設置的每一個。 如果他們不使用您的 create 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM