ADVERTISEMENT

【Googleスプレッドシート】kintoneのレコードを取得!REST APIの認証とJSONパース

【Googleスプレッドシート】kintoneのレコードを取得!REST APIの認証とJSONパース
🛡️ 超解決

kintoneのデータをGoogleスプレッドシートでリアルタイムに分析したいとお考えではないでしょうか。これまではCSVダウンロードを繰り返す作業が必要でしたが、REST APIを使えば自動で最新データを取り込めます。この記事では、kintoneのREST API認証方法と、取得したJSONデータをスプレッドシートでパースする手順を詳しく解説します。API連携の基本から実装までを学び、手動作業から卒業しましょう。

【要点】kintone REST APIでレコードを取得し、スプレッドシートで展開する方法

  • APIトークンの準備: kintoneのアプリ設定でAPIトークンを発行し、必要な権限を付与します。
  • UrlFetchAppでGETリクエスト: Google Apps ScriptのUrlFetchApp.fetch()を使い、認証ヘッダー付きでJSONデータを取得します。
  • JSONパースとシート書き出し: JSON.parse()でレコード配列に変換し、setValues()でスプレッドシートに一括出力します。

ADVERTISEMENT

kintone REST APIをスプレッドシートから使うメリット

kintoneに蓄積されたデータを他のシステムと連携するには、REST APIが最も柔軟な手段です。CSVエクスポートと異なり、特定のクエリで必要なレコードだけを取得できるため、データ量が多くても効率的です。また、Apps Scriptを使えば定期的な自動更新も可能になり、分析やレポート作成の負担を大幅に減らせます。

REST API認証の設定手順

kintone APIを利用するには認証が必要です。最も簡単な方法はAPIトークンを使うことです。以下の手順で準備します。

  1. kintoneアプリの設定を開く
    kintoneの対象アプリを開き、右上の歯車アイコンから「アプリの設定」をクリックします。
  2. APIトークンを生成する
    設定メニューから「APIトークン」を選択し、「生成する」ボタンをクリックします。任意のトークン名を入力し、必要な権限(「レコードの取得」は必須)にチェックを入れます。
  3. トークンを保存する
    生成されたトークン文字列をメモします。アプリの設定を保存して終了します。このトークンは後ほどスクリプト内で利用します。

APIトークンはアプリごとに発行されます。複数のアプリを連携する場合は、それぞれにトークンが必要です。

Google Apps ScriptでJSONを取得・パースする手順

ここからは、Googleスプレッドシートのスクリプトエディタでコードを記述します。手順に沿って進めてください。

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」を開きます。
  2. コードを記述する
    以下のサンプルコードをコピーして貼り付けます。APIトークンとサブドメインはご自身の環境に合わせて書き換えてください。
function fetchKintoneRecords() {
  var subdomain = 'あなたのサブドメイン'; // 例: 'mycompany'
  var appId = 1; // アプリID
  var apiToken = '生成したAPIトークン'; 
  
  var url = 'https://' + subdomain + '.cybozu.com/k/v1/records.json?app=' + appId;
  
  var headers = {
    'X-Cybozu-API-Token': apiToken
  };
  
  var options = {
    'method': 'get',
    'headers': headers
  };
  
  try {
    var response = UrlFetchApp.fetch(url, options);
    var json = JSON.parse(response.getContentText());
    var records = json.records;
    
    // シートに出力
    var sheet = SpreadsheetApp.getActiveSheet();
    sheet.clear(); // 既存データをクリア
    
    // ヘッダー行を準備
    var headersRow = Object.keys(records[0]);
    sheet.getRange(1, 1, 1, headersRow.length).setValues([headersRow]);
    
    // データ行を準備
    var data = [];
    for (var i = 0; i < records.length; i++) {
      var row = [];
      for (var j = 0; j < headersRow.length; j++) {
        var field = records[i][headersRow[j]];
        // 値がオブジェクトの場合は.valueを取得(標準フィールド)
        if (typeof field === 'object' && field !== null && field.hasOwnProperty('value')) {
          row.push(field.value);
        } else {
          row.push(field);
        }
      }
      data.push(row);
    }
    
    // データをシートに書き込み
    if (data.length > 0) {
      sheet.getRange(2, 1, data.length, headersRow.length).setValues(data);
    }
    
  } catch (e) {
    Logger.log('エラー: ' + e.toString());
    SpreadsheetApp.getUi().alert('データ取得に失敗しました: ' + e.message);
  }
}

  1. スクリプトを実行する
    ツールバーの実行ボタン(▶)をクリックします。初回は権限の承認を求められるので、画面の指示に従って許可してください。
  2. 結果を確認する
    アクティブなシートにkintoneのレコードが展開されます。各フィールドの値が正しく表示されているか確認します。

このコードでは、すべてのレコードを取得していますが、クエリパラメータを追加して条件を絞ることも可能です。たとえば「?app=1&query=更新日時 > \”2025-01-01\”」のように指定します。

代替方法: IMPORTDATA関数を使う場合

認証が不要な公開データであれば、IMPORTDATA関数でJSONを取得できます。ただしkintone APIは認証が必要なため、直接IMPORTDATAを使うことはできません。認証情報をURLに含める方法(?apiToken=…)はセキュリティ上推奨されないため、必ずApps Scriptを使用してください。

ADVERTISEMENT

注意点とよくあるトラブル

レコードが1万件を超える場合

一度に取得できるレコード数には上限があります。デフォルトで500件、最大500件までです。1万件以上のレコードを取得したい場合は、オフセットを指定して複数回に分けて取得する必要があります。サンプルコードにループ処理を追加し、「?app=1&offset=500」のようにオフセットを変えながらデータを連結します。

フィールドの型によって値の取得方法が異なる

kintoneのフィールドは、文字列・数値・日付・ドロップダウンなど様々な型があります。標準フィールドはJSON内で「value」プロパティを持ちますが、サブテーブルや関連レコードなどは複雑な構造になります。サブテーブルの場合はさらにループ処理が必要です。この記事のサンプルコードでは簡易的に.valueをチェックしていますが、実運用ではフィールドごとに適切な処理を実装してください。

APIトークンの権限不足でエラーになる

APIトークンに「レコードの取得」権限が含まれていないと、403エラーが発生します。kintoneのアプリ設定でトークンの権限を再確認してください。また、レコードを更新する場合は「レコードの編集」権限も必要です。

主要手法の比較

手法 リアルタイム性 自動化の容易さ セキュリティ
CSVエクスポート・インポート 手動 低い 高い
Apps Script + API スクリプト実行時に更新 高い(トリガー設定可能) 高い
サードパーティ連携ツール リアルタイム 高い 中程度

まとめ

この記事では、kintone REST APIの認証設定と、Google Apps Scriptを使ったJSONデータの取得・パース方法を解説しました。APIトークンの発行とUrlFetchAppの組み合わせで、スプレッドシートに自動的にデータを取り込めるようになります。次は、トリガーを設定して定期的に取得する処理や、取得したデータをQUERY関数で集計する応用に挑戦してみてください。kintoneとスプレッドシートの連携をマスターすれば、業務の効率が格段に向上します。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。