(初出: 2019-08-01 を一部改訂 "How to append JSON data as rows in a Zoho Sheet" を改題)
Zoho Mail では Deluge によるカスタム関数定義でフィルターを書けるわけだが、その仕様は判然としない。フィルターにカスタム関数を使うことを指定した段階で簡素なエディターが開き、そこでいくつかの機能はわかる。実際にははるかに多くの機能を利用できるようだ。特に Zoho プロダクトと連携する機能はおもしろい。
Deluge のエディターの中で zoho.
と入力すると Zoho 各サービスの名前がずらりと出てくる。ここで sheet.
と入力すれば、Zoho Sheet に対して何を行えるかがうかがえる。特に createRecords
が興味深い。その名の通り既存のシート上へデータを追記するものだ。
残念ながら Deluge のドキュメントを漁ってみても zoho.sheet オブジェクトの createRecords
メソッドの直接的な説明は発見できない。REST API の説明ならある。これを見ながらアタリを付ければ、なんとかなる人にはなんとかなるだろう。
下準備として、ワークシートに A1:”Name”, B1:”Region”, C1:”Units” と入力しておく。これがワークシート上のデータベースの各フィールドとなる。 なお実験ではフィールド名に少なくとも日本語の文字は使えなかった。データベースのフィールド名だと思えばさほど不満もないが、やはり Zoho には (というか Google などの巨大プレイヤー以外には) 小国 (日本も含む) の事情にまでは手が回らないのだろう。
Zoho Sheet REST API v2: Append rows with JSON data を参照して適当に読み替え、次の関数を作ってみる。
string TEST() {
resourceId = "RESOURCEID"; // 37-char string
sheetName = "Sheet1";
data = {{"Name":"Joe","Region":"South","Units":284},
{"Name":"Beth","Region":"East","Units":290}};
result = zoho.sheet.createRecords(resourceId, sheetName, data);
return result;
}
RUN してみると、A2:C3 セルにデータが追加された。戻り値はいらないのだろうが、デバッグ中はあった方がエラーメッセージが取得できるのでよい。
上記は REST API の メソッド worksheet.jsondata.append
を呼び出すようだ。同種のメソッドとしては worksheet.csvdata.append
もある。こちらは data
に CSV data を設定することになっている。Deluge でも list
ではなく CSV な単一文字列を渡す必要がある。 insertCSV
というメソッド名だが、実際の動作は append である。