如何 运行 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
或任何其他库。
参考文献:
你好,我有一个脚本,它不是网络应用程序,但它是一个基于 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
或任何其他库。