Qiitaのデータ(view, like, stock)を取得するGoogle Apps Script(GAS)
- Qiita 個人用アクセストークンを発行済みであること。 Qiita「設定」→「アプリケーション」→「個人用アクセストークン」 (読み取り専用:read_qiita)
- Googleアカウント取得済みであること。
- Qiita API v2を使用してHTTP GETリクエストを送信し、
view
,like
,stock
を取得します。 取得処理は以下記事のソースコードを参考にさせていだきました。 【Qiita API】いろんな方法で Views、Likes、Stocksを取得(JavaScript、Google Script、Python, Vue.js) - スプレッドシートにはAPIリクエスト時の日付データ(YYYY/MM/DD)と取得したデータをセットにして、
view
,like
,stock
シートに追加します。 - APIリクエストはGASの関数実行(手動、定期、チェックボックス操作)で送信します。
- チェックボックス操作はPC、スマートフォンに対応し、
control
シートのチェックボックスを有効(TRUE)にするとスマホからAPIリクエストを送信し、正常終了、異常終了時に無効(FALSE
)に変更します。 - 複数回データ取得を行う場合は日付データを基準に重複する日付を特定して、行単位で最新データのみ残します。
- エラー発生時は設定したメールアドレス宛にエラー内容を送信します。
config.gs(変数名
)に以下の設定情報を定義してください。
-
スプレッドシートIDの設定(
spreadSheetID
) -
qiitaアクセストークンを設定する
- 公式ドキュメントを参照し、トークンの発行および、設定をしてください。(
personalAccessToken
)
- 公式ドキュメントを参照し、トークンの発行および、設定をしてください。(
-
メールアドレスを設定する
- エラー発生時に設定したメール宛にエラー内容を送信します。(
emailAddress
)
- エラー発生時に設定したメール宛にエラー内容を送信します。(
-
プロジェクト名を設定する
- メール本文に記載されるプロジェクト名です。(
projectName
)
- メール本文に記載されるプロジェクト名です。(
-
initSheet()
を実行して書込み先シートを作成するinitSheet()
では関連シート(sum
,view
,like
,stock
,control
)を追加して初期値を設定します。
-
スコープ設定(
appsscript.json
) ※ユーザー環境により異なります必要に応じて設定してください。
関数の@todo
を参照し、以下のスコープを設定してください。
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.scriptapp"
],
-
myFunction()
を実行してスクリプトからGoogleアカウントへのアクセスを許可する (※初回実行時※2022/09/21現在)- Googleスプレッドシー卜の参照、編集、作成、削除
- 外部サービスへの接続
- 自分がいないときにこのアプリケーションを実行できるようにする
-
スプレッドシート更新用イベントトリガーの設定 (※スマートフォンから関数実行を有効にしたい場合)
createEditTrigger()
を実行して、実行後にonEdit(e)
を削除もしくはコメンアウトしてonEditCell(e)
のコメントアウトを外してください。
-
プロジェクトを定期実行設定 (※定期実行を有効にする場合)
- 「編集」→「現在のプロジェクトのトリガー」から設定。1日1回の取得を設定)
- Googleアカウントへのアクセスを許可する(※初回実行時※2022/09/21現在)
- このアプリケーションがインストールされているスプレッドシートの表示と管理
- 外部サービスへの接続
- 自分がいないときにこのアプリケーションを実行できるようにする
-
Gmailへのアクセス許可設定
- Gmailのすべてのメールの閲覧、作成、送信、完全な削除
- fetch(url, params) https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
- getActive() https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactive
- newTrigger(functionName) https://developers.google.com/apps-script/reference/script/script-app#newTrigger(String)