使用 Google Apps 脚本在 Blogger 中创建帖子
Posted
技术标签:
【中文标题】使用 Google Apps 脚本在 Blogger 中创建帖子【英文标题】:Create a post in Blogger with Google Apps Script 【发布时间】:2019-09-17 17:16:33 【问题描述】:到目前为止,我还没有找到使用 Google 脚本在 Blogger 中创建帖子的好代码。
在 API 控制台中,我获得了以下凭据:
客户 ID 客户端密码 API 密钥此外,库已添加到 Google 脚本中:
OAuth2 库 → MswhXl8fVhTFUH_Q3UOJbXvxhMjh3Sh48 Blogger 库 → M2CuWgtxF1cPLI9mdRG5_9sh00DPSBbB3我尝试了一些代码,这是当前的:
function create_blog_post()
var payload =
"kind": "blogger#post",
"blog":
"id": "12345........" // YOUR_BLOG_ID
,
"title": "New post",
"content": "With content..."
;
var headers =
"Authorization": "Bearer " + getService().getAccessToken(), // ← THIS IS WRONG
"X-HTTP-Method-Override": "PATCH"
;
var options =
"method" : "post",
"headers" : "Authorization" : "Bearer" + getService().getAccessToken(),
"contentType" : "application/json",
"payload" : ' "kind": "blogger#post", "blog": "id": "12345........" , "title": "New post", "content": "With content..." '
;
try
var result = UrlFetchApp.fetch(
"https://www.googleapis.com/blogger/v3/blogs/12345......../posts", options);
Logger.log(result);
catch (e) Logger.log(e);
请用最简单的代码帮我解决这个问题。
【问题讨论】:
可以问一下THIS IS WRONG
的详细信息吗?如果您的脚本有更多问题,您能提供吗?
标有 «THIS IS WRONG» 的行的错误消息如下: ReferenceError: "getService" is not defined。 (第 13 行,文件“crear_post_blog”)
感谢您的回复。从您的回复来看,这份文件有用吗? github.com/gsuitedevs/apps-script-oauth2
你需要使用urlfetch而不是gapi。 gapi 仅适用于客户端。在 urlfetch 标签中搜索关于向博主 api 发送授权标头的示例
【参考方案1】:
必读:
ScriptApp#getOauthToken Blogger §post#insert UrlFetchApp#fetch Editing manifest#Setting explicit scopes Switch to standard GCP API Library问题:
在同步服务器端使用异步客户端浏览器示例。解决办法:
可以使用UrlFetchApp
从 Google 应用脚本访问 Blogger api
可以使用ScriptApp
提供的 oauth 令牌绕过完整的 OAuth 流程
在 appsscript.json 清单文件中包含范围。
切换到标准 GCP 并启用博主 api
片段:
function createBlogPost()
var postUrl = "https://www.googleapis.com/blogger/v3/blogs/blogId/posts";
var blogId = /*"YOUR_BLOG_ID"*/;
postUrl = postUrl.replace("blogId",blogId);
var options =
method:"post",
contentType:"application/json",
headers: Authorization: "Bearer "+ ScriptApp.getOAuthToken(),
muteHttpExceptions: true,
payload: JSON.stringify(
title: "Hello from Apps Script!",
content: "This post is automatically created by Apps script"
)
var res = UrlFetchApp.fetch(postUrl, options).getContentText();
console.log(res);//or Logger.log(res)
清单范围:
"oauthScopes": [
"https://www.googleapis.com/auth/blogger",
"https://www.googleapis.com/auth/script.external_request"
]
【讨论】:
非常感谢,大师。第一条错误消息是Missing after property list. (line 10, file "Code")
,所以我在 headers:
行的末尾添加了一个逗号。然后,在运行代码时,UrlFetchApp
的错误消息是 Request failed for https : // www . googleapis . com returned code 403...
。如何解决?
@Julio 你添加范围了吗?
感谢您的回答。是的,我做到了 → "oauthScopes": ["googleapis.com/auth/blogger", "googleapis.com/auth/script.external_request"]
我启用了 API 并将脚本与项目编号相关联并对其进行了授权。现在它开始工作了!非常感谢TheMaster,这将对许多其他人有用。 :)
完美答案,非常感谢,之前我用的是Email发帖,效率低下,这个方法更好以上是关于使用 Google Apps 脚本在 Blogger 中创建帖子的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google Apps 脚本在 Google 表格中创建新表格
在 Google Apps 脚本中使用 Mandrill API
在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格
使用 Google Apps 脚本在 Blogger 中创建帖子