【Googleスプレッドシート】KintoneとSheetsを連携!業務データの双方向同期

【Googleスプレッドシート】KintoneとSheetsを連携!業務データの双方向同期
🛡️ 超解決

Kintoneで日々管理している顧客情報や案件データを、Googleスプレッドシートでも参照したいと思ったことはありませんか。また、スプレッドシートで編集した内容をKintoneに自動反映できれば、入力の手間を大幅に削減できます。この記事では、Google Apps Script(GAS)を使ってKintoneとスプレッドシートの双方向同期を実現する方法を、具体的な手順とともに解説します。これにより、両方のツールをシームレスに連携し、業務の効率化を図れます。

【要点】Kintoneとスプレッドシートを双方向同期する3つの鍵

  • Kintone APIトークンの取得: アプリごとにAPIトークンを発行し、GASから安全にアクセスできるようにします。
  • GASのdoGet/doPost関数の作成: スプレッドシート側でレコードの取得・追加・更新を行う関数を記述します。
  • タイマートリガーの設定: 定期的にスクリプトを実行し、双方向のデータを同期します。

ADVERTISEMENT

Kintoneとスプレッドシートの連携の仕組み

KintoneはWeb上のデータベースであり、REST APIを公開しています。Google Apps Scriptは、このAPIに対してHTTPリクエストを送信することで、Kintoneのレコードを取得・作成・更新・削除できます。スプレッドシート側では、スクリプトエディタを用いて関数を定義し、メニューやトリガーで実行します。双方向同期を実現するには、Kintoneからデータを読み取ってスプレッドシートに書き込む関数と、スプレッドシートの変更を検知してKintoneに書き戻す関数をそれぞれ作成し、適切な間隔で呼び出す必要があります。

Kintoneとスプレッドシートを双方向同期する手順

準備:KintoneアプリのAPIトークンを取得する

  1. Kintoneのアプリ設定を開く
    Kintone上の連携したいアプリを開き、「設定」→「APIトークン」を選択します。
  2. APIトークンを作成する
    「トークンを生成する」をクリックし、必要な権限(レコードの閲覧・追加・編集など)をONにします。生成されたトークン文字列をメモしてください。
  3. サブドメインとアプリIDを確認する
    アクセスURLからサブドメイン(例:https://{サブドメイン}.cybozu.com)とアプリID(URLの「/k/」の後の数字)を控えます。

GoogleスプレッドシートにGASスクリプトをセットアップする

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択し、新しいプロジェクトを作成します。
  2. Kintone APIを呼び出す関数を記述する
    以下のような関数を書きます。
    function getKintoneRecords() {
      var subdomain = 'あなたのサブドメイン';
      var appId = 'アプリ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
      };
      var response = UrlFetchApp.fetch(url, options);
      var records = JSON.parse(response.getContentText()).records;
      // スプレッドシートに書き込む処理
    }
  3. スプレッドシートへの書き込み処理を追加する
    取得したrecordsをシートに貼り付けます。例えば、ヘッダ行を追加し、各レコードのフィールド値をセルに設定します。
  4. スプレッドシートからKintoneに書き込む関数を作成する
    逆方向の同期として、シートの内容をPOSTリクエストでKintoneに送信します。更新時はPUT、新規追加はPOSTを使い分けます。
  5. カスタムメニューを追加して手動同期できるようにする
    スクリプトにonOpen関数を追加し、メニューに「Kintoneから取得」「Kintoneに送信」などのボタンを表示します。

定期的な自動同期のためのトリガーを設定する

  1. スクリプトエディタでトリガーを開く
    左メニューの「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。
  2. 時間主導型のトリガーを設定する
    実行する関数(例:syncKintoneToSheets)を選び、時間間隔を「1時間おき」や「1日おき」に設定します。必要に応じて複数のトリガーを追加してください。
  3. 承認作業を行う
    初回実行時に、スクリプトの権限承認を求められます。必要なスコープを確認して許可してください。

双方向同期でよくあるトラブルと対処法

APIトークンが原因で401エラーが発生する場合

APIトークンの権限が不足している可能性があります。アプリ設定で「レコードの閲覧」だけでなく「追加」「編集」もONにしてください。また、トークンが正しくコピーされているか確認します。

スプレッドシートのデータ型がKintoneのフィールドと合わない場合

Kintoneの日付フィールドには日付文字列(YYYY-MM-DD)、数値フィールドには数値として送信する必要があります。GASでデータを整形する際に、toString()やparseInt()などを適切に使い分けてください。

レコード数が多くてタイムアウトする場合

Kintone APIは1回のリクエストで最大500件まで取得できます。それ以上のレコードがある場合は、オフセットを指定して複数回に分けて取得します。GASの実行時間制限(6分)にも注意し、必要に応じて処理を分割します。

ADVERTISEMENT

連携方法の比較:GAS vs アドオン vs 外部サービス

方法 費用 手間 柔軟性
GAS自作 無料(API利用制限内) 中〜高(スクリプト記述が必要) 高い(自由にカスタマイズ可能)
アドオン利用 一部有料(月額制) 低(インストールと設定のみ) 中(アドオンの機能に依存)
外部連携サービス(Zapierなど) 有料(タスク数による) 低(GUIで設定) 中〜高(多くのアプリ対応)

まとめ

Google Apps Scriptを使えば、Kintoneとスプレッドシートの双方向同期を無料で実現できます。APIトークンの発行とGASの基本的なコーディングに慣れれば、ほかのアプリとの連携にも応用が効きます。まずは単方向の同期から試し、徐々に双方向の仕組みを整えてください。定期的なトリガーを設定すれば、手作業を減らし、常に最新のデータを両方のツールで共有できます。業務の効率化にぜひお役立てください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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