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トークンを取得する
- Kintoneのアプリ設定を開く
Kintone上の連携したいアプリを開き、「設定」→「APIトークン」を選択します。 - APIトークンを作成する
「トークンを生成する」をクリックし、必要な権限(レコードの閲覧・追加・編集など)をONにします。生成されたトークン文字列をメモしてください。 - サブドメインとアプリIDを確認する
アクセスURLからサブドメイン(例:https://{サブドメイン}.cybozu.com)とアプリID(URLの「/k/」の後の数字)を控えます。
GoogleスプレッドシートにGASスクリプトをセットアップする
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択し、新しいプロジェクトを作成します。 - 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; // スプレッドシートに書き込む処理 } - スプレッドシートへの書き込み処理を追加する
取得したrecordsをシートに貼り付けます。例えば、ヘッダ行を追加し、各レコードのフィールド値をセルに設定します。 - スプレッドシートからKintoneに書き込む関数を作成する
逆方向の同期として、シートの内容をPOSTリクエストでKintoneに送信します。更新時はPUT、新規追加はPOSTを使い分けます。 - カスタムメニューを追加して手動同期できるようにする
スクリプトにonOpen関数を追加し、メニューに「Kintoneから取得」「Kintoneに送信」などのボタンを表示します。
定期的な自動同期のためのトリガーを設定する
- スクリプトエディタでトリガーを開く
左メニューの「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。 - 時間主導型のトリガーを設定する
実行する関数(例:syncKintoneToSheets)を選び、時間間隔を「1時間おき」や「1日おき」に設定します。必要に応じて複数のトリガーを追加してください。 - 承認作業を行う
初回実行時に、スクリプトの権限承認を求められます。必要なスコープを確認して許可してください。
双方向同期でよくあるトラブルと対処法
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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
