如何 运行 Google 应用程序脚本中的触发器每次都无需重新验证

How to run the triggers in Google app script without reauth each time

你好,我有一个脚本,它不是网络应用程序,但它是一个基于 API 的脚本,它从 json 获取数据并将它们作为 post 发送给博主,我运行使用基于时间的触发器来使用此功能,但在一些 运行 之后我需要打开身份验证 url 并进行验证..我如何避免这种情况以及 运行触发器继续 这是授权码

var service = getBloggerService_();

if (service.hasAccess()) {
var api ='https://www.googleapis.com/blogger/v3/blogs/' + blogId + '/posts/';

var headers = {
  'Authorization': 'Bearer ' + getBloggerService_().getAccessToken()
};

var options = {
  'headers': headers,
  'method' : 'post',
  'contentType': 'application/json',
  'payload': body,
  'muteHttpExceptions': false
};

try {
  var response = UrlFetchApp.fetch(api, options);

  var responseCode = response.getResponseCode();
  Logger.log(responseCode);
  var json = JSON.parse(response.getContentText());
  Logger.log(json);
}
catch(err) {
  Logger.log(err); // error with url fetch call
}
  }
else {
 var  authorizationUrll=service.getAuthorizationUrl();
 Logger.log('Open the following URL and 
re-run the script: %s',
    authorizationUrl);

} }

解决方案:

  • 手动在 appsscript.json 中添加 Blogger 范围。

    {
      ...
      "oauthScopes": [
        "https://www.googleapis.com/auth/blogger",
        "https://www.googleapis.com/auth/script.external_request"
      ],
      ...
    }
    
  • 然后您可以使用:

    var headers = {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(); //contains Blogger scope always
    };
    
  • 您不需要使用 service 或任何其他库。

参考文献: