LoginSignup
0

More than 3 years have passed since last update.

Zoho Sheet に Deluge と JSON で行を追加する方法

Last updated at Posted at 2019-08-22

(初出: 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 である。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0