見出し画像

Google Apps Script(GAS)を利用して、kintone(キントーン)とスプレッドシートをAPI連携してみた

今回はkintone(キントーン)とスプレッドシートをAPI連携してみたいと思います。
kintoneで運用を開始すると便利さゆえにどうしてもエクセルやCSV、スプレッドシートにデータを反映したくなります。ここではGASを利用して、具体的に、kintoneのデータを、必要な時に、スプレッドシートに取り込む方法を紹介します。

事前必要項目
①kintone(キントーン) スペースまたはアプリの管理権限
②google 一般的なアカウントが必要





kintoneアプリの作成

GASとAPI連携するために、まずはkintoneアプリの設定をしていきます。
既存のアプリでも構いませんが、ここではアプリを作成するところから始めていきます。アプリの作成や設定には、スペースやアプリの管理権限が必要になります。権限のない方はkintone管理者に問い合わせてみてください。

kintoneを開いて、アプリの「+」マークをクリックしてください。

アプリの右の「+」をクリック
kintoneアプリストアから「顧客リスト」を選択

今回は手っ取り早く連携のイメージをつかむために、既存のテンプレートアプリを使用します。おすすめのアプリから「顧客リスト」を選択してください

「顧客リスト」

「サンプルデータを含める」にチェックが入っていることを確認して、
「このアプリを追加」をクリック

このアプリを追加
追加をクリックします

追加された「顧客リスト」アプリを開いてみてください

「顧客リスト」が作成された
「顧客リスト」の一覧画面

すでにサンプルデータが20件入っています。
このデータをスプレッドシートに反映していきたいと思います。

kintoneアプリ側から必要なデータは3つだけです。
①kintoneドメイン情報
②kintoneアプリのID番号
③kintoneアプリのAPIトークン
以下で取得方法を説明します。
後ほど使用するので、それぞれメモ帳などにコピペしておいてください



kintoneアプリ-①ドメイン情報

kintoneアプリ-②ID番号

①と②は簡単です。
「顧客リスト」アプリのURLを確認してください
[XXXX.cybozu.com/k/YYY/]となっていると思いますが
このXXXX部分が①のドメイン情報になります。(おそらく会社名などが多いかと・・・)
そしてYYYの数字が②のID番号になります。
それぞれメモ帳等にコピペしておいてください。

アプリのURLに注目


kintoneアプリ-③APIトークン

「顧客リスト」アプリの右上「⚙」マークをクリックしてください。

⚙マークをクリック

右の設定をクリックします

設定

APIトークンをクリックします

APIトークン

続けて「生成する」をクリックします

生成する

APIトークンが発行されるので同様にメモ帳等にコピペしておいてください

赤枠がAPIトークン

最後に右下の保存ボタンを押してください。

保存

続けて、アプリを更新します

アプリを更新
アプリを更新

ここまででkintone側の設定は終了です



Google Apps Script(GAS)の準備

下のリンクからスプシを作成しましょう。googleアカウントない方は作ってログイン。

スプシの名前も何でもオッケーです。左上の「無題のスプレッドシート」をクリックすると簡単に名前を編集できます。
今回は「kintoneテスト」としておきました。

名前を変更

スプシが作成できたら、次はGoogle Apps Script(GAS)の準備です。
上のメニューから「拡張機能」→「Apps Script」を選択し、GASを起動させてください。こちらも名前は何でも良いのですが、せっかくなのでスプレッドシートの名前と同じにしておきましょう。

Apps Script を選択
無題のプロジェクトを押すと名前が変更できる
名前を変更

さっそくコードを記入していきます。
初期設定されている「ファイル」の「コード.gs」を選択して、右側に表示された全てのコードを選択します。

右側のコード部分を全て選択

選択したコードに以下のコードをコピペします。

//初期設定
const urlDomain = 'ここ1'; //①ドメイン情報
const appId = ここ2; //②ID番号
const apiToken = 'ここ3'; //③APIトークン

//メニュー追加  
function onOpen() {
    SpreadsheetApp.getUi()
        .createMenu("kintone")
        .addItem("kintoneテストより取込む", "getRecords")
        .addToUi();
}

//kintoneテストより取込む
function getRecords() {
  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシート
  const sheet = activeSpreadSheet.getSheetByName('シート1'); // シート1
  sheet.clear();//前回データをクリア
  const range = sheet.getRange('A1:I1');
  var values = range.setValues([['会社名','部署名','担当者名','郵便番号','TEL','FAX','住所','顧客ランク','メールアドレス']]); //1行目に反映

  // kintoneからデータを取得
  var paramFields = "&fields=$id," + encodeURIComponent("会社名,部署名,担当者名,郵便番号,TEL,FAX,住所,顧客ランク,メールアドレス"); //取り込みたいデータのフィールドコードを指定
  var urlGetRecords = "https://" + urlDomain + ".cybozu.com/k/v1/records.json";
  var url = urlGetRecords + "?app=" + appId + paramFields;
  var res = JSON.parse(UrlFetchApp.fetch(url, {"method": "get","headers": {"X-Cybozu-API-Token": apiToken}}));
  
  // 取得したデータを整形
  var output = [];
  res["records"].forEach(function(record){
    var row = [];
    //先ほど指定したフィールドコードと型を指定
    row.push(record["会社名"].value);
    row.push(record["部署名"].value);
    row.push(record["担当者名"].value);
    row.push(record["郵便番号"].value);
    row.push(record["TEL"].value);
    row.push(record["FAX"].value);
    row.push(record["住所"].value);
    row.push(record["顧客ランク"].value);
    row.push(record["メールアドレス"].value);
    output.push(row);
  });
  
  // スプレッドシートに出力
  sheet.getRange(2, 1, output.length, output[0].length).setValues(output);
}

もちろん、このままでは不十分です。
初期設定部分のコードを書き換える必要があります。
'ここ1' → ①ドメイン情報のXXXX部分を''の間に入力してください
ここ2 → ②ID番号のYYY部分の数字を''なしで入力してください
'ここ3' → ③APIトークンを''の間に入力してください
以下は例です(こちらをコピーしてもエラーになります)

//初期設定
const urlDomain = 'domeinjouhou'; //①ドメイン情報
const appId = 999; //②ID番号
const apiToken = 'H7tw98iajfHofhgJOJOH8t5jogas8t975w879w80w0wuigjsowgso'; //③APIトークン

//メニュー追加  
function onOpen() {
    SpreadsheetApp.getUi()
        .createMenu("kintone")
        .addItem("kintoneテストより取込む", "getRecords")
        .addToUi();
}



API連携テスト

初期設定部分の書き換えが終わったら、上メニューのデバックの右がonOpenになっていることを確認して、「実行」ボタンを押します

onOpenを確認

すると、承認を求められます。
権限を確認をクリックしてください。

権限を確認をクリック

続いて、googleアカウントの確認です。
問題なければログインを選択。

アカウントでログイン

このアプリはGoogleで確認されていません
と怖いメッセージが表示されますが、左下の「安全ではないページに移動」をクリックしてください。

安全ではないページをクリック

続いて、アカウントの許可を求められたら、許可を選択してください。

許可をクリック

スクリプトが実行され、ログが表示されます

正常に実行が完了します

スプレッドシートに戻ると、メニューにkintoneが追加され、さらにkintoneテストより取込むが追加されていることが確認できます。

「kintone-kintoneテストより取込む」が作成されている

それでは、連携できたか確認しましょう。
メニューの「kintone」をクリックして、さらに「kintoneテストより取込む」をクリックしてみましょう。

「スクリプトを実行しています」と表示されるので、しばらく待ちます。

実行中

「スクリプトが終了しました」が表示されたら成功です。

終了

以下のように反映されていれば成功です

kintoneデータを取り込むことができた

連携を確認できたら、次は、今回GASで設定したコードとkintoneのフィールド設定を調整することで、実用化へつなげることができると思います。
本記事では、まずはGASとkintoneの連携を体験してみる、ということをコンセプトにやり方の紹介をしてみました。

この記事が気に入ったらサポートをしてみませんか?