会計システムにデータ投入しなければならない人の視点に立てば、その『Download ボタン』は極めて有効だ。いわゆる「仕訳伝票」のデータを Excel ファイル上に、サクサク追記していくことができる。「アル」と「ナイ」とでは、業務効率が大きく違う。日々の売掛金が、5分で入力されるか、1時間かけて入力されるか、運命の分かれ道・・・。
しかしそれでも、「Excel ファイルに追記する」という作業であるが故に、非常にクローズドな工程のままだ。たとえば、「最新ファイルは何処にあるのか?」、「その作業におけるコツはあるのか?」、「微修正が必要な場合のテクニックは?」などなど、工程に紐づくべきノウハウは俗人的なものになる可能性が高い。(ヌケモレ・コピーミス・不正といった事象発生リスクも気になる)
以下のワークフロー定義は、自動生成された複数の仕訳伝票データが Google SpreadSheets に自動追記される仕組みだ。(「MFクラウド会計」であれ、「Freee」であれ)、どんなクラウド型会計システムにデータ投入するにしても、『仕訳伝票』がクラウドで一元管理されていれば非常に便利だ。
ちなみに、そもそも、ワークフローに沢山の案件が流れ、それらの集計を行うべきは、ワークフローシステム側の仕事といえる。たとえば『案件一覧』は、各プロパティの総計や平均が集計される。しかし、各案件が「不定数の伝票」を生成するようなケースにおいては、その「伝票」を集計したい、といったニーズにはナカナカ応えづらい。その様な場合には『伝票一覧』というテーブルが別途用意されるべきだろう。
ここでは2016年5月に登場した「Sheets API v4」を使う。
[販売報告プロセス-スプレッドシート連携]
[販売報告プロセス-スプレッドシート連携:「3.記帳する」画面]
「API を使いこなす」のは大変だ。
しかし、今日「パソコンが使いこなされている」のと同じように、近い将来「API を使いこなす」のは多くのビジネスパーソンに必要なスキルとなるだろう。事実、「Facebook 投稿と Twitter 投稿を連動させる」といったシステム間の API 通信設定は、すでに多くの人が実体験するに至っている。
ちなみに Google Sheets API v4 は、その設計が v3 と大きく異なる。
> The Sheets API gives you full control over the content and appearence of your spreadsheet data.
と自身を表現しているように、きめ細かなレイアウト操作までできるようになっている。つまり「様々なレベルでの操作」ができるのだ。
ただ、シンプルに使いたい人にとっては、必要な API 情報を調べるのがタイヘンになったともいえるだろう。マニュアル(英語)を参照する場合は、(結局のところ)、「v3からv4への乗り換え」を参照する方が手っ取り早いケースもある。ちなみに v4 では「JSON ベースの REST API」が徹底されており、生産性の観点では非常に使いやすくなっている印象もある。
Sheets API は
- spreadsheets
- spreadsheets.sheets
- spreadsheets.values
▼ Google との OAuth2 通信設定のサンプル (メッセージ送信中間イベント)
POST: https://sheets.googleapis.com/v4/spreadsheets/●{spreadsheetId}●:batchUpdate
Content-Type: application/json
- Authorization Code Request URL
- https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
- Access Token Request URL
- https://accounts.google.com/o/oauth2/token
- Scope
- https://www.googleapis.com/auth/spreadsheets
- Consumer Key
- ※ 取得すること
- Consumer Secret
- ※ 取得すること
<通信許可の様子>
▼生成されるべき RequestJson のサンプル
※ Requestsオブジェクトの中に、AppendCellsRequestオブジェクトを埋める。
※ 列データ(RowData オブジェクト)を繰り返し作ることになる。
{"requests": [{"appendCells": {"sheetId": 0,"rows": [ {"values": [ {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "2000-01-01"}}, {"userEnteredValue": {"stringValue": "売掛金"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "対象外"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"numberValue": 111}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "売上高"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "課税売上 8%"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"numberValue": 111}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "たいとる"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": ""}}, ],}, {"values": [ {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "2000-01-01"}}, {"userEnteredValue": {"stringValue": "売掛金"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "対象外"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"numberValue": 111}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "売上高"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "課税売上 8%"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"numberValue": 111}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": "たいとる"}}, {"userEnteredValue": {"stringValue": ""}}, {"userEnteredValue": {"stringValue": ""}}, ],} ],"fields": "*",},}],}
▼スクリプト工程『TSV to RequestJson』の設定サンプル (サーバサイド JavaScript)
//// == ワークフローデータの参照 / Retrieving == var myTsv = data.get("6") + ""; var sheetGid = data.get("9") + ""; //// == 演算 / Calculating == var myJson = '{"requests": [{"appendCells": {"sheetId": ' + sheetGid + ',"rows": ['; var rowsArray = myTsv.split("\n"); // 改行毎に分割し string[] 配列に格納 for (var i=0; i < rowsArray.length; i++){ myJson += '{"values": ['; myJson += '{"userEnteredValue": {"stringValue": ""}},'; // 1列目(A列)に空行を入れる var cellsArray = rowsArray[i].split("\t"); // Tab毎に分割し string[] 配列に格納 for (var j=0; j < cellsArray.length; j++){ if( j == 5 || j == 11 ){ // 7列目(G列)と13列目(M列)は数値列 myJson += '{"userEnteredValue": {"numberValue": ' + cellsArray[j] + '}},'; }else{ myJson += '{"userEnteredValue": {"stringValue": "' + cellsArray[j] + '"}},'; } } myJson += '],},'; } myJson += '],"fields": "*",},}],}'; //// == ワークフローデータへの代入 / Updating == retVal.put("10", myJson );
<データ項目一覧画面>
[雛形ダウンロード (無料)]
- 業務テンプレート:販売報告プロセス-スプレッドシート連携
- 第486話:クラウド会計と連携させる(その1) (2016-06-06)
- 第487話:クラウド会計と連携させる(その2) (2016-06-13)
- 不正会計の防止、基本は「自動記録」に尽きる (2015-07-27)
- 請求書発行フローと会計システムの連携 (2015-04-27)
- 未入金の発生! 自動的にエスカレーション! (2014-11-10)
- M230 自動工程: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト) (使い方)
- M401 業務の流れ: 申請と差戻対応の工程を分け “手戻り” をモニタリングしやすいように設定する (使い方)
- M203 業務の流れ: 処理フロー途中に、同時並行処理、単一選択分岐、複数選択分岐を設定する (使い方)
[英文記事 (English Entry) ]
0 件のコメント :
コメントを投稿