【问题标题】:Create a post in Blogger with Google Apps Script使用 Google Apps 脚本在 Blogger 中创建帖子
【发布时间】: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 发送授权标头的示例

标签: google-apps-script blogger urlfetch


【解决方案1】:

必读:

问题:

  • 在同步服务器端使用异步客户端浏览器示例。

解决办法:

  • 可以使用 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发帖,效率低下,这个方法更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
相关资源
最近更新 更多