Kibela API を Google Apps Script で実行する

April 23, 2019

概要

Kibela Web API のベータ版が公開されました。 Kibela Web API は GraphQL で提供されています。

この記事では、Kibela Web API の Google Apps Script での実行方法を説明します。なお、Google Apps Script のスクリプトは clasp を利用して作成します。

必要なもの

Kibela アクセストークンの取得

  1. 右上のユーザーアイコンから、[設定] > [個人用アクセストークン]を開きます。
  2. [アクセストークンの生成]ボタンをクリックし、タイトルとアクセス権限を設定して[作成]ボタンをクリックします。
  3. アクセストークンが表示されます。アクセストークンはこれ以降表示されないので、コピーして控えておいてください。

クエリについて

リクエストボディで、query パラメータに対して取得したいリソースのオブジェクトを指定します。 API コンソール を開き、右側の[Docs]メニューよりオブジェクトの定義を確認できる。

今回は次のクエリで、ログインユーザー(Kibela アクセストークンの発行ユーザー)の最新記事一覧を1000件取得します。

{
  currentUser {
    latestNotes(first: 1000) {
      edges {
        node { title }
      }
    }
  }
}

Google Apps Script の作成

  1. clasp でGoogle Apps Script プロジェクトを作成します。詳細は「clasp を使って Google Apps Script のスクリプトを作成する」を参照のこと。

  2. index.tsに、次のコードを貼り付けます。

function main(): void {
  const token = PropertiesService.getScriptProperties().getProperty('KIBELA_API_TOKEN') || '';
  const team = PropertiesService.getScriptProperties().getProperty('KIBELA_TEAM') || '';
  const endpoint = `https://${team}.kibe.la/api/v1`;

  const graphql = `
  {
    currentUser {
      latestNotes(first: 1000) {
        edges {
          node { title }
        }
      }
    }
  }`;

  const option: GoogleAppsScript.URL_Fetch.URLFetchRequestOptions = {
    method: 'get',
    contentType: 'application/json',
    headers: {
      Accept: 'application/json',
      Authorization: `bearer ${token}`,
    },
    payload: JSON.stringify({ query: graphql }),
  };

  const res = UrlFetchApp.fetch(endpoint, option);
  const json = JSON.parse(res.getContentText());
  Logger.log(json);
}
  1. クラウドの GAS プロジェクトを開き、スクリプトのプロパティを設定します。 [ファイル] > [プロジェクトのプロパティ]を開きます。[スクリプトのプロパティ]タブより次のプロパティを追加します。

    • KIBELA_API_TOKEN: 取得したKibela アクセストークン
    • KIBELA_TEAM: Kibela チーム名
  2. clasp pushコマンドでクラウドの GAS プロジェクトへアップロードします。

  3. クラウドの GAS プロジェクトを開きます。main関数を実行すると、Kibela Web API での取得結果がログに出力されます。ログは、[表示]>[ログ]より確認できます。

以上。