GASでkintoneのデータを条件で絞って取得する

GASでkintoneのデータを条件で絞って取得する Google Apps Script

前回、kintoneのデータをスプレッドシートに取得する方法を紹介しました。

kintoneから取得する際には全てのデータを取得していましたが、今回は条件で絞って取得するようにしてみます。

kintoneから取得するデータ

前回は以下のようにkintoneのデータを全て取得していました。

kintoneのデータをスプレッドシートに全て取得

今回は、上記の項目の中から「メールアドレス」で絞って取得できるようにします。

条件で絞って取得するためのスプレッドシート

メールアドレスで絞って取得するため、スプレッドシートを以下のようにしてみました。

条件で絞って取得するためのスプレッドシート

B1セルにメールアドレスを入力して検索ボタンをクリックすると、下に検索結果が表示されるという仕組みにします。

条件で絞って取得する

条件で絞る場合は以下のようなコードになります。

function searchInquiry() {
  var urlGetRecords = "[ここにkintoneのURLを入れる]/k/v1/records.json";
  var appId = [ここにアプリIDを入れる];
  var apiToken = '[ここにAPIトークンを入れる]';
  
  var sheetOutput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('問い合わせ検索');

  var email = sheetOutput.getRange(1, 2).getValue();
  if (email == "") {
    Browser.msgBox("メールアドレスを入力してください。");
    return;
  }
  
  // kintoneからデータを取得
  var paramFields = "&fields=$id," + encodeURIComponent("日時,お名前,メールアドレス,件名,内容");
  var paramQuery = "&query=" + encodeURIComponent("メールアドレス=\"" + email + "\"");
  var url = urlGetRecords + "?app=" + appId + paramFields + paramQuery;
  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(Utilities.formatDate(new Date(record["日時"].value), 'JST', 'yyyy/M/d HH:mm'));
    row.push(record["お名前"].value);
    row.push(record["メールアドレス"].value);
    row.push(record["件名"].value);
    row.push(record["内容"].value);
    
    output.push(row);
  });
  
  // スプレッドシートに出力
  sheetOutput.getRange(4, 1, output.length, output[0].length).setValues(output);
}

16行目の「paramQuery」という変数を追加しました。
条件で絞ってkintoneから取得する場合は、URLに「query」というパラメータを付与します。

条件を指定する場合は
項目名=”値”
という形式で指定するため、上記の例では、
メールアドレス=”mail@sample.com”
のような形式になるように、条件を組み立てています。

条件となるメールアドレスは、8行目でB1セルから取得するようにしています。

取得する項目を定義した時と一緒で、encodeURIComponent関数を使用して日本語をエンコードしています。

ボタンクリック時に作成したコードを実行するようにする

検索ボタンの「︙」ボタンをクリックすると、「スクリプトを割り当て」というメニューがあるのでクリックします。
以下のような画面になるので、上記で作成したコードの「searchInquiry」関数を指定します。

スクリプトを割り当て

作成した関数を実行する

例えば、メールアドレスに「jiro.test@test.jp」を指定して検索すると、以下のように表示され、kintoneから条件で絞って取得することができました。

条件で絞って検索

以下のようにメールアドレスを変えて検索すると、該当のものに変わります。

条件で絞って取得する

kintoneをデータベースにして、条件で絞って取得する

今回のように条件で絞って取得する方法はよく使うことになると思います。

kintoneをデータベースにして情報をためておき、取得する際は条件で絞り、該当のもののみ取得する、というやり方をすることで、kintoneの利用価値も高くなると思います。

ぜひ試してみてください。

コメント

  1. よう より:

    spreadsheetへの転記でいろいろ探していてここにたどり着きました!
    条件を絞ってkintoneからデータを取得する部分で、日付の期間で絞り込みをしたいのですが、うまくいきません。コードの書き方はどうすればいいのか教えてもらえないでしょうか?

    encodeURIComponent(“注文日>=\”” + startday + “\”” && “注文日<=\"" + endday + "\"" )としても、endday以前の日付のデータしかとってくれません。

    • specially198 より:

      絞り込み条件で「&&」を使用していますが、「and」ではないでしょうか?

タイトルとURLをコピーしました