Append rows with JSON data to a Zoho Sheet

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 = "";
    sheetName = "Sheet1";
    data = {{"Name":"Joe","Region":"South","Units":284},
            {"Name":"Beth","Region":"East","Units":290}};
    result = zoho.sheet.createRecords(resourceId, sheetName, data);
    return result;
}

A2:C3 セルにデータが追加された。戻り値はいらないのだろうが、デバッグ中はあった方がエラーメッセージが取得できるのでよい。

上記は REST API の メソッド worksheet.jsondata.append を呼び出すようだ。同種のメソッドとしては worksheet.csvdata.append もある。こちらは data に CSV data を設定することになっている。Deluge でも list ではなく CSV な単一文字列を渡す必要がある。 insertCSV というメソッド名だが、実際の動作は append である。

広告

Zoho Mail supports custom functions to filter emails

Filter – Custom DRE Functions

そう、 Zoho Mail はマイナーだが強力なのだ。Web ベースのメールホスティングサービスでフィルターにカスタム関数を設定できるものは他に寡聞にして知らない。メールを適当に編集して ClickSend で SMS へ飛ばすカスタム関数は、次のように書ける。

info "To get the email data, use the 'mail_messageId' parameter sent from mail filter when calling the Custom Function.";
messageDetails = zoho.mail.getMessage(mail_messageId);
mailContent = messageDetails.get("CONTENT");
mailSubject = messageDetails.get("SUBJECT");
fromAddress = messageDetails.get("FROM");
mailSubject = mailSubject.replaceAll(...,...);
 :
mailContent = mailContent.replaceFirst(...,...);
 :
mailSubject = mailSubject.left(mailSubject.length().min(21));
mailContent = mailContent.left(mailContent.length().min(60));
sendmail
[
	from :zoho.loginuserid
	to :"81**********@sms.clicksend.com"
	subject :"auth~USERNAME~UUIDUUID-UUID-UUID-UUID-UUIDUUIDUUID~" + mailSubject + "~CALLERID"
	message :mailContent
]

カスタム関数は Zoho Creator の機能を流用しているのだろうから、契約によっても利用の可否が異なるのかもしれない。私の契約は Zoho Workplace である。

Zoho CardDAV is NOT usable yet

Zoho Mail の Calendar (カレンダー) や Contacts (連絡先) も ownCloud と同期すると便利だと思い、vdirsyncer での同期を試みた。カレンダーの方は難なく同期できるが、Contacts がどうもいけない。Zoho 公式の (微妙に説明が足りない感じの) 説明に沿って、しかし試行錯誤の挙句、なんとか同期する設定を見つけ出したのだが、最初の16件 (この数字に意味があるかどうかは不明) だけ同期した後 WebDAV の長い長い応答待ちに入り、そこから戻ると今度はエラーが多発する。控えめに言って使い物にならない。vdirsyncer (pimutils) の開発者周辺では Zoho のサーバー側の問題だという見方で、実際に Zoho 自身も自分たちのバグだと認めているようである。残念。

しかし考えてみれば Zoho Contacts は姓名順の表示もできないしふりがなも扱えないから、たとえ同期できたとしても使いやすいとは言えない。今までのように、ownCloud が吐き出す VCF を適当に 山田 太郎 ⇔ Taro YAMADA 式に変換して手動でインポートすることにしよう。それ用のスクリプトは準備してあるから問題ない。

なお、vdirsyncer 用の「Zoho Contacts でなんとか同期に成功する設定」とは次のようなものだ。カレンダーの同期に利用するローカル (ファイルシステム上の) データの確認に khal を利用しているため、ここでは path に khal 用のフォルダーを指定している。

[pair contacts]
a = "contacts_local"
b = "contacts_remote"
collections = [["contacts", "<local address book name>", "contacts"]]
#conflict_resolution = "b wins"

[storage contacts_local]
type = "filesystem"
path = "/home/<username>/.local/share/khal/contacts/"
fileext = ".vcf"

[storage contacts_remote]
type = "carddav"
url = "https://contacts.zoho.com/carddav/<zoho email id>/default/contacts/"
username = "<zoho email id>"
password = "<zoho app password>"

 

顧問、ねえ

口入れ屋が顧問紹介サービスを展開してきたが最近は技術顧問の紹介も商業化されているらしい。パートタイム労働に顧問というよくわからないラベリングをすると単価は上がりプライドも保てるという一挙両得の商売ではある。様々な人間関係の市場化――崩壊でもある――の一端だろう。そうは言っても掃き溜めに鶴まではいかなくとも亀程度の人材でさえ相対的に供給不足だから成り立つ商売で、意味がないわけでもない。

CardDAV サーバー

先日も触れたが現状で日本人向けと思われる CardDAV サーバーは iCloud が最大手であり、これを嫌う場合は ownCloud Contacts くらいしかないように思われる。ownCloud よりも Nextcloud の方が機能的には進んでいる雰囲気だが、Contacts については t-bucchi 氏のパッチが取り込まれるよりも前にフォークしたようで、残念ながらふりがなが使えない。手元のサーバーで ownCloud は (Nextcloud も) 稼働はさせているが、試しに ownCloud のホスティングサービスを探してみた。いくつもあるのだが、oCloud.de はかなり前から目にしていたような気がするので見に行ってみると、容量 1GB の無料プランがある。ownCloud / Nextcloud はしばしば Dropbox のようなサービスと紹介されているが、そうした観点からでは容量 1GB はいかにも手狭で、無料プランらしいと言える。しかし ownCloud / Nextcloud の真価は CalDAV / CardDAV にあるのかもしれず、こちらに着目するのであれば容量 1GB はかなり使いでがある。そこで早速使ってみることにした。今まで使ってきたサーバーは大手町の某所に収容されているようだが、ここから ocloud.de へ traceroute してみると千葉→サンタクララ→ニューヨーク→アムステルダム→フランクフルトとつながり、RTT は 250ms 程度だった。それなりだが、シェルを使うわけではないので問題はない。当面無料プランで十分だが、oCloud.de は 500GB プランでも月額1,000円程度なので価格競争力もそこそこある。もちろん iCloud の 2TB で月額1,300円には到底及ばないし、ホスティングだから構成の自由度も低いのだが、代替手段としては検討の余地があるだろう。

ownCloud

iCloud 以外で日本人のアドレス帳をまともに扱えるのは現状では ownCloud だけか。ぷちのいず氏 petit-noise.net がふりがな対応の pull request を出してくれたおかげだ。大いに感謝しつつ ownCloud ホスティングサービスを探すと、確か老舗の oCloud.de が無料ホスティングをしている。容量1GBだが家庭内でカレンダーやアドレス帳を共有する程度なら問題ない。ファイルサーバーとして使うなら100GB程度は欲しいがそれでも€6.9/moで悪くはない。

oCloud.de は Nextcloud も同じように提供している。今や Nextcloud の方がビデオ会議まで可能と明らかにできがよいのだが、ふりがなだけは如何ともし難い。

Zoho Sheet オンラインシートビューアと使い捨てシートの作成

Zoho が オンラインシートビューア という面白いサービスを始めていた。

ビューアと名乗っているが編集が可能であり、編集後のワークブックを .xlsx, .xls, .ods, .csv, .tsv, .pdf, .html でダウンロードできる。「使い捨てシートの作成」というボタンもあり、Zoho にアカウントを作成することなく Zoho Sheet の機能をほとんどすべて利用することができる。ざっと見たところ、共有機能と VBA マクロ/カスタム関数機能は使えないが、条件付き書式やピボットテーブル、ソルバー程度までは使えるようで、WPS Office Sheets 程度の機能はある。フォントは Windows での定番はカバーしている。日本語では MS 明朝, MS P明朝, MS ゴシック, MS Pゴシックが使える。

クラウド型のスプレッドシートといえば Google Docs のそれを一般的には思いつくだろうが、あちらは独自色がかなり強いのでオンプレミスの Excel と行き来しながら運用するのは辛い。

Zoho Sheet は Microsoft Excel との互換性が非常に高く、WPS Office に次ぐ。いわゆるクラウド型のスプレッドシートの中では最も高いと言ってよい。OS を問わず VBA マクロまで対応可能である。クラウド型であるから共有機能も充実している。マイナーであることだけが問題だが、実は Zoho はさほど小さな企業ではないのでサービスの継続性にも不安はない。もう少し盛り上がってほしいところだ。

ただし、なぜか登録ユーザーの Sheet では 日本語フォントが Noto Serif CJK JP のみとなる。これはいただけない。