第492話:取引先マスタ Spreadsheet を 参照する(Sheets API v4)

2016年7月19日
「顧客リスト」を表計算ソフトで管理している会社は多い。

ただ、、、10年前は当たり前のように『Excel ファイル』が作られていたのに、今では、クラウド型データベースである『Google SpreadSheet』や『kintone』が利用されるケースの方が多くなってきたと思う。つまるところ、
  • いつでも・どこからでもアクセスできる
  • データが消失するリスクを小さくできる
  • データを複製して持ち運ぶ必要が無い
  • サービスプランによっては閲覧履歴を全て残せる
といった利便性をリーズナブルな価格で(もしくは無料で)享受できるのだから、特に中小零細企業には有り難い。

<API 通信のイメージ図>

しかも、クラウド型データベースを使えば、外部システムにも「顧客リスト」を参照させることが可能となる。(API 機能:Application Programming Interface)

以下のワークフローは、「Google SpreadSheet 上の顧客リスト」をワークフロー環境に取り込ませる自動フローだ。この例では、毎日深夜 1:00 に「顧客リスト」が自動的に同期されるようになる。(フローそのものは、以前紹介した kintone 同期とほぼ同じだ)

[顧客マスタ同期プロセス-スプレッドシート連携]



「API」と言ってもそれほどヤヤコシイ話ではない。Google SpreadSheet に対してであれば、
https://sheets.googleapis.com/v4/spreadsheets/1PfOZTv8l7FX-l-Gk2K2FOiK9f-aFdTRUGiuHlMPEhVg/values:batchGet?ranges=pubtest!A2:B
と言うリクエストを投げれば、以下のようなレスポンスが返ってくる。ただソレだけの話だ。

▼レスポンス・サンプル
{
  "spreadsheetId": "1PfOZTv8l7FX-l-Gk2K2FOiK9f-aFdTRUGiuHlMPEhVg",
  "valueRanges": [
    {
      "range": "pubtest!A2:B1000",
      "majorDimension": "ROWS",
      "values": [
        [
          "www.toyota.co.jp",
          "トヨタ自動車株式会社"
        ],
        [
          "www.nissan.co.jp",
          "日産自動車株式会社"
        ],
        [
          "www.honda.co.jp",
          "本田技研工業株式会社"
        ],
        [
          "www.mazda.com",
          "マツダ株式会社"
        ],
        [
          "www.fhi.co.jp",
          "富士重工業株式会社"
        ]
      ]
    }
  ]
}

あとは JavaScript を使いこなせる人であれば、色々なデータ加工が可能となるだろう。この例では、ワークフロー環境(Questetra)に、選択肢 XML をセットする仕組みとなっているが、これ以外にも様々な業務応用が考えられる。

※ たしかに、事前に OAuth2 というセキュリティ通信設定が必要になるが、ソコは何とか頑張って乗り越えてもらいたい。
※ Google Sheets API マニュアル ⇒
https://developers.google.com/sheets/reference/rest/v4/spreadsheets.values/batchGet


なお、この例では「更新承認」というヒューマン工程を通るようになっている。1時間の猶予期間内であれば、同期を止めることも可能だ。自動処理が適切に稼働しているか不安なときは、夜中に起きてチェックするのも良い。

<通信許可の様子>

[顧客マスタ同期プロセス-スプレッドシート連携:「1.同期状況確認」画面]

▼スクリプト工程『List Generate』の設定サンプル (サーバサイド JavaScript)
//// == ワークフローデータの参照 / Retrieving ==
var myJson = data.get("1") + ""; // JSON text

//// == 演算 / Calculating ==
var customersData = JSON.parse( myJson );
var numOfRecords = customersData.valueRanges[0].values.length;
var value_id_list = "";
var display_label_list = "";
for (i = 0; i < numOfRecords; i++){
  value_id_list += customersData.valueRanges[0].values[i][0] + "\n";
  display_label_list += customersData.valueRanges[0].values[i][1] + "\n";
}

//// == ワークフローデータへの代入 / Updating ==
retVal.put("4", value_id_list);
retVal.put("5", display_label_list);

<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

[英文記事 (English Entry) ]

0 件のコメント :

コメントを投稿