GoogleAppsScript(GAS)からQiitaAPIを使ってQiita投稿記事(限定共有記事)を投稿しました。その際のソースコードを備忘録として残します。
後々は、GASのトリガー設定を使って、投稿記事の自動更新をさせてみる予定です。
本記事の環境
※PCに環境構築を行う必要はありません。
WEBブラウザ(Google Chome)
Googleアカウント
使用技術
GoogleAppsScriptのみ。
事前準備
- Qiitaにて、「設定」から「アプリケーション」を選択する。
- 「個人用アクセストークン」を発行する。※私は読み書き権限両方を付けました。
- 発行した「個人用アクセストークン」をメモする。※後で入力します。
手順
- 以下の成果物をGoogleスプレッドシート/拡張機能/Apps Scriptにコピー&ペーストし、「アクセストークン」と「投稿記事タイトル」を書き換える。
- 「実行」ボタンを選択して、実行が終わるまで少し待つ。
- 初回は、承認、Googleアカウントへのログイン、リクエストの許可が求められる。
- 実行が終わったら実行ログを確認する。
- 実行ログに問題がなければQiitaの限定共有記事を確認する。
所感
- 欲しいGASのサンプルコードがなかなか見つからず、JavaScriptのコードを参考にしました。
- それなりの頻度でQiitaAPIが失敗することがあったので、リトライ処理の実装を考えます。
成果物
// 全権限トークン
const TOKEN_ALL = "[発行したトークン]";
// 投稿記事タイトル
const ITEM_TITLE = "[投稿記事タイトル]";
// 記事投稿処理
function createQiita() {
const apiUrl = "https://qiita.com/api/v2/items";
const item_data = {
'body' : "# Example", // 投稿記事本文
'private' : true, // 限定共有記事にするかどうか
'tags' : [ // 投稿記事のタグ
{"name" : "Qiita", "versions" : ["0.0.1"]},
{"name" : "GoogleAppsScript", "versions" : ["0.0.1"]},
{"name" : "QiitaAPI", "versions" : ["0.0.1"]},
],
'title' : ITEM_TITLE, // 投稿記事タイトル
};
const headers = {'Authorization' : 'Bearer ' + TOKEN_ALL};
const params = {
'method' : "post",
'contentType' : "application/json",
'payload' : JSON.stringify(item_data),
'headers' : headers,
'muteHttpExceptions' : false
};
const response = UrlFetchApp.fetch(apiUrl, params);
if (response.getResponseCode() >= 300) {
Logger.log("記事作成失敗 : " + response.getContentText());
} else {
const obj = JSON.parse(response.getContentText());
Logger.log("記事作成成功 : title[" + obj.title + "]、url[" + obj.url + "]");
}
}