LoginSignup
6
11

More than 1 year has passed since last update.

Google Apps Scriptを使ってGoogleスプレッドシートと外部APIを連携してみる

Last updated at Posted at 2021-08-17

この記事について

  • 外部APIの結果をスプレッドシートに書き込みたい! という方向けの記事です
  • qiitaのLGTM数などを定期的に取得してスプレッドシートに書き込む等ができるようになります
  • また、業務においてもでAPIを提供しているプロジェクト管理ツール(Backlogなど)と連携することで チームメンバーのチケット一覧 などを作れるようになります

GASについて

  • スプレッドシートとAPIの連携はGAS(Google App Script)を利用して行います
  • GASについては、こちらの記事がわかりやすいかったです

連携方法

今回はサンプルとして、qiitaのAPIと連携してみます

  • 適当なスプレッドシートを作成します

  • スクリプトエディタを開きます
    ファイル名

  • 以下のようにコードを記述します

    • qiitaのAPIについては、こちらを参照ください
    • コード中に存在する appendRow()UrlFetchAppfetch () は、 GASで用意されているクラスや関数になるため、こちらの公式を確認ください
function myFunction() {
  // URL情報
  const origin = 'https://qiita.com';
  const targetItemId = 'c2f7ba5997187854b7a4'; //この記事の記事ID
  const getItemUrl = `${origin}/api/v2/items/${targetItemId}`;

  // スプレッドシートを取得 
  // * XXX部分はスプレッドシートのIDが入ります
  // * IDはスプレッドシートURLを見れば確認できます
  const sheet = SpreadsheetApp.openById('XXX').getSheetByName('シート1');
  // 今日の日付を取得
  const date = new Date();
  const datetime = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;

  // APIとのやりとり
  const res = UrlFetchApp.fetch(getItemUrl);
  const item = JSON.parse(res)
  // スプレッドシートへ書き込み
  sheet.appendRow([datetime, item.title, item.likes_count]);

}

  • スクリプトエディタの実行をクリック
    ファイル名

  • スプレッドシートの方を確認すると以下のようになっています
    ヘッダー部分は手動で付けました、、笑
    ファイル名

  • これで連携完了です!意外と簡単に連携することができます

番外編:定期実行したい

往々にして、1時間ごとにAPIを実行して情報を取得したい等があると思います。
そういう場合は以下のように設定すると上記のスクリプトを定期実行してくれます。

  • スクリプトエディタのトリガーをクリック
    ファイル名

  • トリガーの条件を設定する

    • この場合は1時間間隔で実行したいため、時間主導型を設定し、間隔を1時間おきにしています

ファイル名

  • 保存すればトリガーが生成され、定期実行できるようになります

最後に

  • 筆者もまだまだGASを使いこなせていないため、こういう便利な使い方もあるよ!というコメントをお待ちしております :bow:
6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11