Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用服务帐户使用Gmail API为主要Gusite帐户创建签名_Google Apps Script_Gmail Api - Fatal编程技术网

Google apps script 如何使用服务帐户使用Gmail API为主要Gusite帐户创建签名

Google apps script 如何使用服务帐户使用Gmail API为主要Gusite帐户创建签名,google-apps-script,gmail-api,Google Apps Script,Gmail Api,我正在使用POST并能够在Gsuite帐户中添加带有签名的别名id,但是使用相同的代码,我尝试更新主Gsuite帐户的签名,但它没有更新 请指导如何应用逻辑来使用服务帐户更新主Gsuite帐户签名 var服务\u账户={ “私钥”:“----开始私钥----VE=\n----结束私钥---\n”, “客户电子邮件”:“xxxxxx”, “客户id”:“xxxxxxx”, “用户电子邮件”='admin@demo.in'; }; 函数getOAuthService(用户){ 返回OAuth2.

我正在使用POST并能够在Gsuite帐户中添加带有签名的别名id,但是使用相同的代码,我尝试更新主Gsuite帐户的签名,但它没有更新

请指导如何应用逻辑来使用服务帐户更新主Gsuite帐户签名

var服务\u账户={
“私钥”:“----开始私钥----VE=\n----结束私钥---\n”,
“客户电子邮件”:“xxxxxx”,
“客户id”:“xxxxxxx”,
“用户电子邮件”='admin@demo.in';
};
函数getOAuthService(用户){
返回OAuth2.createService(“服务帐户”)
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(服务帐户.私钥)
.setIssuer(服务账户、客户邮箱)
.setSubject(用户电子邮件)
.setPropertyStore(PropertiesService.getScriptProperties())
.setParam('访问类型','脱机')
.setParam('批准提示','强制')
.setScope('https://www.googleapis.com/auth/gmail.settings.sharing https://www.googleapis.com/auth/gmail.settings.basic');
}
函数createAlias(){
var userEmail=admin@demo.in';
//var别名=Testing@demo.in';
//var alias_name='User';
var签名=‘测试’;
var service=getOAuthService();
service.reset();
if(service.hasAccess()){
var url='1〕https://www.googleapis.com/gmail/v1/users/me/settings/sendAs'
变量头={
“授权”:“承载人”+服务.getAccessToken(),
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”,
};
var资源={
sendAsEmail:别名,
签字:签字,
回复地址:别名,
真的,
验证状态:“已接受”,
是的,
isDefault:正确
};
变量选项={
“头”:头,
'method':'POST',
“有效负载”:JSON.stringify(资源),
“muteHttpExceptions”:true
};
Logger.log(选项);
var response=UrlFetchApp.fetch(url,选项);
Logger.log(response.getContentText());
}
}
函数重置(){
var service=getOAuthService();
service.reset();
}
您需要使用该方法
  • 在应用程序脚本中,您可以按以下方式执行此操作:
  • 你似乎已经做对了,但要指出:

构建服务帐户时,指定范围
https://www.googleapis.com/auth/gmail.settings.basic“
并包括
.setSubject(用户电子邮件)

您可以在设置服务帐户的地方提供您的代码吗?@ziganotschka更新了工作代码我可以设置别名id,但无法为主帐户创建签名我可以更新服务帐户i下提到的电子邮件地址的签名,即“userEmail”='admin@demo.in'; 对于域中的任何其他用户,我将收到一个错误“代码”:403,“消息”:“拒绝委派”Testing@demo.in
setSubject(userEmail)
需要包含您要模拟的用户的电子邮件-即您要更新其签名。对于不同的用户,您需要更新
setSubject(userEmail)
。感谢您的澄清,我如何在一个goI中更新所有域用户签名我只能想到一个循环,列出所有域用户并在每次迭代中重建AuthService。
function changeSignature() {
  var userId = 'your primary email';
  var sendAsEmail = userId;
  var signature = 'Testing'; 
  var service = getService();
  service.reset();
  if (service.hasAccess()) {    
    var url = 'https://www.googleapis.com/gmail/v1/users/'+userId+'/settings/sendAs/'+sendAsEmail   
    var headers ={
      "Authorization": 'Bearer ' + service.getAccessToken(),
      "Accept":"application/json", 
      "Content-Type":"application/json",
    };   
    var resource ={
      "signature": signature,
    };    
    var options = {
      'headers': headers,
      'method': 'PATCH',
      'payload':JSON.stringify(resource),
      'muteHttpExceptions': true
    };
    var response = UrlFetchApp.fetch(url, options);
    Logger.log(response.getContentText());    
  } 
}