【GAS×freeeAPI】スプレッドシートのデータからチャットワーク通知用の本文を作成する


こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化するネタをシリーズでお届けしています。

このシリーズでは、freeeとチャットワークを連携して「当日入金予定の取引一覧を自動でチャットワークに送信するツール」を作成します。

成果物のイメージがこちら!入金予定のある日に、自動でチャットワークに通知が届きます。

freeeシリーズ2成果物イメージ

前回の記事では、オブジェクトからデータを取り出し、スプレッドシートに書き出す方法を紹介しました。

【GAS×freeeAPI】オブジェクトからデータを取り出してスプレッドシートに書き出す
「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第5回目。キーと値がペアになった「オブジェクト」から必要な値のみを取り出して「配列」に格納し、スプレッドシートに書き出す方法を紹介しています。

今回の記事では、スプレッドシートのデータからチャットワーク通知用の本文を作成します。ツール完成まであと一歩ですよ!

シリーズを通してfreeeAPIを使いこなし、経理業務の自動化を進めていきましょう!

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるようサポートしていきます!)

取引データの「ID」を「名称」に変換する

前回の記事で、freeeAPIのレスポンスをスプレッドシートに書き出しました。オブジェクト(連想配列)から必要データのみを配列に格納し、1回でスプレッドシートに書き込む方法でした。

freeeapi2-5-1

わざわざスプレッドシートに書き込まなくても、レスポンスのデータを直接チャットワークに送信できるのでは・・・?と思うかもしれませんね。

いったんスプレッドシートに書き込んだのは、下記3つの項目を変換するためです。数値形式のIDがチャットワークに通知されても、何の科目かわかりませんからね。

  1. 取引先ID
  2. 勘定科目ID
  3. 品目ID

そこで、この3つの「ID」を「名称」に変換します。スプレッドシートのG列~I列に、名称用のヘッダーを準備します。

ヘッダー項目

取引先・勘定科目・品目それぞれについて、「IDと名称が存在するマスタ」を用意し、「ID」をキーにして「名称」に変換します。

シリーズ初回の記事「会計freee連携アドオン」でスプレッドシートにデータを取得するで、3つの情報を取得しました。

  1. 取引先情報
  2. 勘定科目情報
  3. 品目情報

これらの情報をマスタとして使い、名称を取得します。

シートを参照

アドオンで取得した情報をマスタ形式に整形

スプレッドシートのVLOOKUP関数を使用して、「ID」をキーとして、「名称」に変換します。

VLOOKUP関数は「キー」を「値」の左側に配置する必要があるので、「キー」をA列に移動します。

取引先情報では、「システムID」が「キー」になります。

キーをA列に移動

3つのシートそれぞれについて、同じ作業をします。

  1. 取引先情報
  2. 勘定科目情報
  3. 品目情報

A列に「ID」・B列に「名称」を配置します。

キーと名称

VLOOKUP関数でIDを名称に変換する

VLOOKUP関数で「取引先ID」をキーにして、「取引先情報」のシートから「取引先」を取得します。

VLOOKUP(検索キー, 範囲, 番号, [並べ替え済み])

IFERROR関数も組み合わせて、IDが見つからない場合は”-“(ハイフン)表示にします

IFERROR(値, [エラー値])

G2セルの入力値がこちらです。
=IFERROR(VLOOKUP(D2,'取引先情報'!A:B,2,false),"-")

取引先

他の2項目も同様の処理をします。

「勘定科目ID」をキーにして、「勘定科目情報」のシートから「勘定科目」を取得します。

勘定科目

「品目ID」をキーにして、「品目情報」のシートから「品目」を取得します。

品目

これで、3つの項目をすべて名称に変換できました。実行日によって取引件数が変わるので、関数式は任意の行までコピーしておきましょう。

数式のコピー

これでスプレッドシート上のデータが完成しました。ここからチャットワーク通知用の本文を作成していきましょう!

チャットワーク通知用の本文を作成する

このツールでは、スプレッドシートの5項目をチャットワークに送信します。

チャットワークに送信する項目

5項目を、このような形式でチャットワークに通知します。

freeeapi2-6-10-3

チャットワーク通知用の本文を作る関数を作成していきます。取引件数の分、データを作成するので、引数として取引件数を受け取ります。

  • 関数名:createBody
  • 引数:取引件数

createBody関数は、取引データが存在する場合のみ、main関数から呼び出されます。

これから作成するcreateBody関数です。取引件数(total_count)を引数として受け取ります。

それではcreateBody関数の中身を書いていきましょう。

スプレッドシートの取引データを二次元配列に格納

スプレッドシートの取引データを二次元配列に格納します。

二次元配列に格納

  • 行数:total_count(ここでは3件)
  • 列数:A列~I列(9列)

RangeオブジェクトのgetValuesメソッドで、セル範囲を変数valuesに格納します。

二次元配列の値を変数に格納

まずは、1件目の取引からチャットワーク通知用の文字列を作ってみます。チャットワークに通知するのは赤枠の項目のみです。(配列の要素番号0,2,6,7,8)

二次元配列の要素番号

コードです。二次元配列の1件目なので、行番号をvalues[0]にしています。5項目をパイプラインで結合します。

 

ログ出力結果です。5項目を取得して、1行に結合できました。

1行分のログ

あとは、取引件数分のデータを取得して文字列を作成すればよいですね!

取引件数分のデータから文字列を作成する

ループ処理で、取引件数の分、データを結合します。文字列結合のポイントは2つあります。

①末尾に改行コード ’\n’ を付与する

②結合代入演算子の「+=」で結合する(※下記の2つは、どちらも同じ結果になります)

  • body = body + str
  • body += str

5項目のヘッダーも付与しておきましょう。

 

ログ出力結果です。ヘッダー項目と取引3件分の本文を作成できました。

ログ出力結果

あとは、この文字列をチャットワークに通知すれば完成です!

スクリプトまとめ

ここまでで作成したスクリプトのまとめです。

※下記2つの関数は過去記事をご参照ください。

 

まとめ・次回予告

「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの第6回目では、スプレッドシートのデータからチャットワーク通知用の本文を作成する方法を紹介しました。

  • VLOOKUP関数を使用して、「ID」を「名称」に変換する
  • スプレッドシートの値を二次元配列に格納し、ループ処理で値を結合する
    • 取引1件ごとに、末尾に改行コード \n を付与
    • 結合代入演算子 += で文字列を結合

さて次回はいよいよ最終回!チャットワークに送信しますよ。

【GAS×freeeAPI】当日入金予定の取引一覧を毎日自動でチャットワークに送信する
「当日入金予定の取引一覧を自動でチャットワークに送信する」シリーズの最終回。GASのトリガーとチャットワークAPIを使用して、毎日自動でチャットワークに取引データを送信するツールを完成させます。

連載目次:【GAS×freeeAPI】当日入金予定の取引一覧を自動でチャットワークに送信する

「クラウド会計ソフトfreee」のAPIをGASで操作して経理業務を自動化するシリーズ。「当日入金予定の取引一覧を自動でチャットワークに送信するツール」の作成を目標とします。

  1. ノンプログラミングでOK!「会計freee連携アドオン」でスプレッドシートにデータを取得する
  2. 【GAS×freeeAPI】指定条件の取引一覧を取得する「リクエストURL」の作り方と仕組み
  3. 【GAS×freeeAPI】GETリクエストで当日入金予定の取引一覧を取得する
  4. 【GAS×freeeAPI】APIリクエストのレスポンスから必要データのみを取り出す
  5. 【GAS×freeeAPI】オブジェクトからデータを取り出してスプレッドシートに書き出す
  6. 【GAS×freeeAPI】スプレッドシートのデータからチャットワーク通知用の本文を作成する
  7. 【GAS×freeeAPI】当日入金予定の取引一覧を毎日自動でチャットワークに送信する

  投稿者プロフィール

もり
もりITライター
GoogleAppsScript, VBAを専門とするITライターです。

退屈なことはプログラミングで片づけよう!
自らの事務職経験を活かし、事務作業をとことんラクにできるITネタを発信していきます。

個人ブログ『もりさんのプログラミング手帳』も運営中!

お気軽にTwitterフォローしてくださいね!

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