Zoho Creator

PageLastUpdate:2009-10-20/today: - /yesterday: -

複数行テキストボックスをリストに変換/Delugeスクリプトで改行コードを使う

2009/10/18
複数行テキストボックスを行ごとに分割してリストにしようとしたら、改行コードがわからなくて困った。ヘルプにもどこにも書いてないくせに\nでできる。
MyList = textboxstring.toList("\n")

フォームの登録ボタンを非表示にする自作関数

「メモの追加」でplaintextフィールドを追加して、何か文字列を表示させた後にこの関数の戻り値を連結するとSubmitとResetのボタンを消せます。

関数

string StyleOfFormButtonHidden()
{
    return "<style type=\"text/css\">.zc-formbutton {visibility: hidden;}</style>";
} 

使い方

plaintextフィールドMyStyleのある状態で
MyStyle = "すでに登録されています" + StyleOfFormButtonHidden();
という感じで。

「メモ」フィールドにstyleタグを設定して入力欄の幅を広げる

2009/07/29

Zoho Creatorはフォームのデザインを変更することができません。
普通のフォームコントロールではそれほど不自由しないんですが、textareaだけは多量に入力したいときに狭すぎます。

いろいろこねくり回した結果、メモフィールドにstyleタグを指定して幅を広げることに成功しました。
MyStyle
(
    type  =  plaintext
    value = "<p>xyz</p><style type=\"text/css\">textarea.zc-textarea { width:100% }</style>\n"
)

ポップアップする入力画面の場合は外側のテーブルにもstyle設定してやらないとダメです。
table.dialog-borderかな。クラス名を拾うのはFirebugを使えばなんとか。

divで構成してくれて、cssでいじれるようにしてくれればいいだけなんだけどな。

Zoho CreatorでGoogle App Engine用のPythonソースが生成可能に!

2009/06/24
Zoho Creator の Google App Engine へのデプロイ
すげぇなZoho。しかしビジネスモデルとして競合しないのかな?
Zoho Creatorなら有料になるところをGoogle App Engineに乗り換えちゃえば無料になるんじゃないかなあ。
まあCreatorでしかできない機能もあるからいいのか。それとも何か仕掛けがあるのか。

しかしいままで気がつかなかった。
ほんとにここは宣伝がヘタクソだなあ。

いろいろとバージョンアップしてるっぽい

2008/10/23
しばらくいじらないうちに、いろいろバージョンアップしていた。
デザイン変更できたり、スクリプトでレコードの追加や削除が出来たり。
権限系もスクリプトからいじれるようになっているので、これでいろんな認証系アプリケーションが組めるなあ。

Zoho Creatorのバグ・個人的要望

2008/05/28時点
  • この記事は「Zoho Creatorは悪い」という内容ではありません。管理人はZoho Creatorを素晴らしいサービスだと思って、実際に業務で使っています。
  • バグを明記し、回避手段のあるものについては回避手段を明記することで、他のユーザーが悩む時間を減らすことが目的です。
  • バグと確定していなくても引っかかったらリストにいれます。
  • バグではないけれど要望も書くことで、できることできないことを明確にします。
  • 「こうすればOK!」とか「それはできるよ!」とか「こういうのも欲しい!」というネタがあればコメントで教えてください~。
大分類 バグ内容 重要度 対処法 状況
動作不良 メールでのデータインポートが動作しない。英語ヘルプ読んでもあまり詳しくは書いてない。もしかしたら送信サーバーとか送信アドレスとか、何か制限があるかも? 他にコードからのレコードインサートの手段がないのでぜひ使いたい。 とりあえずコードで追加できるようになったからいらないけれど、どっかで検証しよう。
バグ コンボボックスにデータが1行しかないときに「ユーザー入力時のアクション」が動作しない。 まあ通常は複数行なので実質問題にならないが、フレキシブルなアプリケーションのときに発生しうる。
表記 FAQにアップロードした画像を表示させるには「XSSセキュリティレベル-低」にするとの記述があるが、これによってどんなセキュリティ上の脅威があるのか説明がない。
動作不良 ビューを消さずにフォームを消したときに、まれにビューが残る。
このビューはどうやっても削除できない。
フォームを消すときは必ずビューを先に消す。
要望 カスタムフィルタの条件にユーザー関数を設定 他のテーブルをもとに計算するようなフィルタがかけられない。
zoho.loginuserとかは使えるので、ユーザー定義関数も使えそうだけどなぁ。
要望 ビューに関数列を作成して動的に表示 フォームに設定した関数列はレコード登録時に固定されてしまう。他のテーブルの変化やログインユーザーなどによって表示を変化させることができない。
要望 スクリプトで他のアプリケーションのデータを参照 サポートの回答では将来的に実装予定とのこと。 20090805できてるっぽいけど未検証
要望 「追加メモ」コントロールで<script></script>タグを動作可能に。 埋め込むことはできて、動作するような感じなんだけど動作しない。セキュリティ的な制約をかけてるかな?
要望 「基準の設定」の条件に関数を設定 他のテーブルをもとに計算するようなレコード制限がかけられない。
要望 ヘッダへのCSSの挿入
要望 入力コントロールの横幅指定 長いデータを入力したり、コントロールの大きさでユーザーに入力桁数を意識させたりしたいよね。
要望 ビューで非表示の列もフィルタできるように。
現在は表示していない列でフィルタしようとすると
>We are unable to fetch this data, sorry! Please note that your data is SAFE.Report this problem to support@zohocreator.com
と表示される。
「編集」を押せば見えるのだから、フィルタかけられるほうがいい。
特に複数選択リストのときに、ビューに表示してしまうとえらい量が多くなるときに、「ビューには表示しないけどフィルタはできる」という使い方がしたい。
セキュリティ的には「フィルタできない列」を指定させればいいと思う。
文字化け alertに日本語を設定すると化ける。日本語でユーザーに警告を出せないのは結構キツイ 20090805解消確認
文字化け 「メモの追加」コントロールで日本語入力できない。文字が化けたり、消えたりする。 「読込時」のコードで値セット 20090805解消確認
文字化け 登録時のシステムメッセージが文字化けしたりしなかったり。 回避不能 20090805解消確認
文字化け Zohoアカウントの登録の最後のパスワード認証が「???ワードを入力」みたいに文字化け。 回避不能 20090805解消確認
文字化け スクリプトのインポートでエラーが出たときに、エラー画面内の日本語がすべて化ける エラーを出さないように作るw 20090805解消確認
動作不良 「複数リスト」で値を選択してもスクリプトで値がnullになる 回避不能。
フォーラムに「まだスクリプトでサポートしてない」と回答があった。
http://forums.zoho.com/viewtopic.php?t=146382&br()
20090805解消確認
動作不良 「複数リスト」のコントロール型を変更できない(グレーアウトされている) 回避不能。もしかしたら「複数リスト」はまだ開発中? 20090805解消確認
フリーズ スクリプトビルダー使用時にFetch recordsを設定する前にUpdate recordsを設定しようとすると操作不能 知っていれば回避できる。こまめに保存すれば被害も少ないです。 20090805解消確認
フリーズ フォーム内で使っている関数を消すとスクリプトビルダーがフリーズ。 その状態で「スクリプトの保存」を押すと関数を使っているコードが消えて回避できる。ビューのバグよりはマシ。
とりあえず関数も使っていないのを確認してから消す。
20090805解消確認
表記 Zoho Creator FAQの下記ページに「画像」フィールドの説明がない。
http://zohocreatorfaq.wiki.zoho.com/%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E7%A8%AE%E9%A1%9E.html
20080603解消確認
表記 「サポートのための編集アクセスを許可」→「サポートのための編集アクセスを中止」
「サポートチームへの共有を開始」→「サポートチームへの共有を中止」
の表記がわかりにくい。チェックボックスにすべき。
言いたいことはわかるけど、わかりにくい。 20080603解消確認
要望 スクリプトでレコードをインサート アップデートはできるのにインサートができない。これができるとかなり複雑なアプリケーションが作れる。
20081023機能追加されていた
要望 共有をスクリプトで設定 会員登録制のアプリケーションをつくろうとしても、いちいちデザインモードにしてから共有を手で設定する必要がある。動的にフォームやビューの共有設定を変更したい。 20081023機能追加されていた
名前:
コメント:

すべてのコメントを見る

レコード削除時のリレーション整合性チェック

2008/05/25
フォームAがフォームBからルックアップされているとします。
フォームBに値が存在するレコードをフォームAから消してしまうと、ルックアップされているフィールドは空白になってしまいます。
コレ、同じ値を持つレコードを新しく作ってもダメなんですよね。内部的にはID列で記録されているようです。

フォームBに値がある間はフォームAの当該レコードを削除できないようにしてあげましょう。
私はID列とは別に、必ず一意性のあるフィールドをつくるようにしているので、下記はその前提で書いています。

フォームAの[フォームのアクション]-[削除時]-[検証]に下記コードを設定します。
if (count(FormB [Key_A == input.Key_A]) > 0)
{
    alert Key_A + "はフォームBに存在するので削除できません。";
    cancel delete;
} 
これだけです。

count関数はガルーダスクリプトのヘルプには記載されているんですが、スクリプトビルダーでは探せません。
最初はforeachループ回してましたよ・・・たぶん内部的には最適化されていると思うので、データが増えても大丈夫、かな?

インフォメーションページを作成する

2008/05/25
Zoho Creatorはアプリケーションを開くといきなりフォームが表示されてしまいます。
ユーザーに「ようこそ」のようなメッセージとか、アプリケーションの使い方を説明するインフォメーションページが欲しいですよね。
「メモの追加」コントロールだけを置いたフォームは[送信][リセット]などが表示されません。
サポートにメールをしたら教えてくれましたが、こんなの気がつかないってw
これと「メモの追加」コントロールにはHTMLがフルにかけることを利用して、インフォメーションページを作成することにします。
「日本語が消えてしまう」への対応と、いちいちソースを編集する手間を軽減するために、「インフォメーション登録」フォームを作成しましょう。
1.InformationListフォームを作成します。
form  InformationList
{
    displayname  =  "インフォメーションの登録"
    success message  =  "データが追加されました!"
 
    Description
    (
        displayname  =  "内容"
        type  =  textarea
    )
 
    Visible
    (
        displayname  =  "表示"
        type  =  checkbox
        defaultvalue  =  false
    )
} 
2.これだけだと追加用のフォームができるだけなので、適当にメンテナンス用のビューを作成します。
3.ユーザーにインフォメーションを表示させるための「インフォメーション」フォームをつくります。
form  Information
{
    displayname  =  "インフォメーション"
 
    Description
    (
        type  =  plaintext
        value = "<br />"
    )
 
    on  add
    {
        on load
        {
            for each record in InformationList  [Visible]
            {
                input.Description = record.Description;
            }
        }
    }
} 
4.「インフォメーション」フォームをレイアウトで一番上に配置し、公開もしくはユーザーに向けて共有します。
5.これで、InformationListに登録したレコードのうち「表示」をonにしたインフォメーションのDescriptionフィールドが、ユーザーがアプリケーションを開いた最初に表示されるようになります。

HTMLが書ける人なら、テーブルでも何でも思うように表示できる、拡張性の高いインフォメーションページになりましたw
もしかしたらZoho Creatorのフォームとか、Zoho WikiとかZoho Writerとか、HTML内に表示できちゃうんじゃないだろうか。
……あとで試そう。

追記

  • 検証した結果、スクリプトは無効化されるがiframeは表示できたw
  • <Hx>タグはZoho Creatorでは使っていないようなので<H1>からスタートしてよい。

単票フォームにURLで指定した画像を表示する

2008/05/25
下記の「メモの追加」コントロールを使って、<img>タグをセットしちゃいます。
  1. 「一行」コントロールで[ImageURL]を作成。※URLコントロールで作成しないのはイベントが使えないためです。
  2. 「メモの追加」コントロールで[Image]を作成。
  3. [フォームのアクション]-[追加時]-[読込時]と[フィードのアクション]-[ImageURL]-[ユーザー入力時」に下記のように入力。
if ((input.ImageURL  ==  null)  ||  (input.ImageURL  ==  ""))
{
    input.Image = "No Image.";
}
else
{
    input.Image = "<img src=" + input.ImageURL + " />";
} 
まあきちんとやるならURLの検証とかいるんだけど、とりあえずURLが画像じゃなければ×が表示されるのでいいか。
ユーザーの入力をそのままHTMLに吐き出すのでXSSが心配。いちおうzohoとしては対策しているらしい。
タグ荒らしは簡単にできるかも。めんどくさいので検証して無い。ユーザー限定しての公開だから荒らし関係ないし。
使用は自己責任で。

「メモの追加」コントロールはHTMLをそのまま表示できる

2008/05/25
実は「メモの追加」コントロールは、XHTMLをそのまま書くことができます。
タグも無制限に使えます。スクリプトはまだ試してませんが、もしかしたら使えるかもしれません。
ただしリストには表示されません。

「メモの追加」コントロールは2008/05/25現在、「日本語環境で入力した内容が消えることがある」というバグがあるようです。
まあコードで設定する分には関係ないバグなので、安心して使いましょう。

いまのとことZoho Creatorは<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">で出力されています。

注意事項

管理人がハマった事例
  • フォームAを元にしたビューを消さずにフォームAを消したら、ビューを消すことができなくなった。
    おまけにスクリプトの出力もできなくなってお手上げに。
    おそらくまだユーザーだけでは処理できないのでサポートに頼むしかなさそう。
FAQの障害情報に載ってた。
障害情報というのは名前がよくないな。ネットワーク障害やサービス停止を連想する。バグと書いたほうが伝わりやすい。

2008/05/23追記

フォームで使用中の関数を削除しても同様の状態に陥る。
障害情報には下記のようにあるが、「アクションなし」など関係なしに、オブジェクトの削除は関連コードをすべて削除してからに統一したほうがよい。
■スクリプト画面がひらけません(エラーが表示): スクリプト画面を開こうとすると、「TypeError: xml has no properties」というエラーが表示され、スクリプトを開けないという動作障害が報告されています。
 アプリケーションの構造上の矛盾が生じた際に、エラーが表示されスクリプトが開けなくなる場合があります。
 原因として、スクリプトにおいて参照(設定)されているフィールドを、何らかの形で削除してしまい、フォーム上に存在しないなどの矛盾が生じていることが考えられます。
 本来、スクリプトで参照(設定)されているフィールドを、削除しようとすると、エラーが表示されて削除ができない仕様になっていて、構造上の矛盾を回避しています。
 ただし、スクリプトの「アクションなし」画面においては、この仕様が設定されていませんでした。(2008年4月2日現在)
 現在、このバグについては修正対応中です。
苦しいのは、オブジェクトを名前ではなく「オブジェクト」として管理しているようで、同じ名前のフォームや関数を作っても、関連性が復帰されないところ。

2008/05/24追記

関数の削除についてはエラーは表示されるものの、画面にボタンが残るので、それをクリックするときれいに消えたみたい。
なんにせよ、アプリケーションをスクリプトとしてこまめに保存する&データのある状態ならバックアップとってから修正することが必須。

2008/05/24追記

どうも管理者でログオンしたときと共有ユーザーでログオンしたときで微妙に動作が異なる。
スクリプトのon editでhideにしたフィールドが表示の瞬間に一瞬表示されるので「マズイな」と思ったら、どうやら管理者じゃないと表示されない?
もしくは管理者のときはフィルタとか削除の表示も多いので、処理に時間がかかるとhideが一瞬見えるのかも。
もしそうだとすると、zoho creatorのhideは重要な秘匿フィールドには使えないということになる。
結論:管理者で表示するとフォームで「このフィールドを非表示にする」がチェックされていても表示される。
だからスクリプトでhideしても一瞬見える。
管理者以外のアカウントでは表示されない。
これ、わかりやすいところに明記しておかないと、結構ハマる人多いと思うけどなぁ・・・

価格について

いったんとんでもない金額(1ユーザー1500円/月)で発表されたが、あまりにも不評で撤回する模様。
→ZohoブログZoho Creator の価格設定の “戦略上の失敗” と 教訓
実際はまだ価格設定作業中で、おそらく2008/07/01の有料化より前に再設定が発表されそう。

2008/05/28


無料版/個人向け有料版

  • 5つのアプリケーションが無料
  • データ容量が合計200MB
  • 一定時間内に処理できる情報量が制限される
  • 共有ユーザ制限なし
  • 容量や処理量を増加させるために有料オプションあり

ビジネス版

  • 基本は無料版と同じ
  • 管理機能あり
  • 価格はユーザー数によって決まる。検討中だが1ユーザー5ドル、100ユーザー以上で3ドルにディスカウント。
ビジネス用途でも、ユーザーが自分でID登録してくれてデータ量が多くなければ無料版でよさそうです。

正式価格発表?

2008/05/30
まだ日本でマスコミ発表とかはされていませんが、現在ホームの一番上のバーからアップグレードができるようになってますね。
http://creator.zoho.com/whyupgrade.jsp#freeusers
これで計算すると100ユーザーで30,000/月。これなら現実的かな。
クレジットカード以外での決済はできるのかな?請求書出してくれると社内でラクなんだけど。

      • 日本での価格はFAQに載ってるものになるとすると、日本円換算で1ドル150円はぼり過ぎじゃね?

とりあえずここは読んでおくべき

アプリケーションをガルーダスクリプトとして吐き出す

全体構造を見渡したいときにコードを印刷できるとラク。
アプリケーションのアクセスモード画面で右上の[アプリケーションのコピー]→[スクリプトとして保存]
最初デザインモードで探していて時間を無駄にした。

プログラマのためのZoho Creatorを理解するコツ

フォーム名は「ユーザー向けの追加フォームの表示名」として扱い、
スクリプト向けに正しいオブジェクト名をつける

Zoho Creatorで最初にとまどうのは「テーブルデザイン」と「レコードの新規登録用フォーム」を作る作業が一体になっているところ。
データベースを設計する思想ではじめると、つい「○○テーブル」とか「○○台帳」のようにフォーム名をつけてしまいそうになるが、Zoho Creatorの場合は「○○の登録」のような名前にしたほうが、後からアプリケーションとしての見通しはよくなる。

その代わり、スクリプトを書くのが前提であれば、フォームを作成してすぐに
[スクリプト]タブ→←メニューの[フォームの定義]内の[アクションあり]を選んでスクリプト画面を開き、
form  form1
{
} 
となっているところを
form  ExampleTable
{
} 
のように、テーブルとしての「正しい名前」をつけてやる。
アプリケーションを作りこんでからだと変更できなくなることがある。

同様に、フィールドを追加した後もこの画面でフィールド名を「正しい名前」でつけてやることで、後でアクションを記述するときに見通しがよくなる。

関数フィールドはレコードを保存するときに計算される。ビューで動的に表示させることはできない。

最初関数フィールドって表示時に毎回計算してくれるのかと思ったらダメでした。
動的に表示できると便利なんだけどな・・・

今後の予定

とりあえずいままで組み込めた下記の機能を解説予定
  • ユーザーの所属組織による権限判定
  • 登録したレコードのみ編集可能にする

使っていそうな人



履歴とか

2008/05/23 スクリプトのヘルプが日本語化されていないのとオブジェクト構造図がないのでいろいろと手探り。

幸いサポートがよいので、そこで教わったTIPSを書いていこうと思う。
2008/05/25 最初zohoだけで1ページかと思ってたけど、Zoho Creatorで結構書くことあるので専用ページに変更。
2008/05/28 バグ&要望を編集可能テーブルにしてみる。

comment

このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。
名前:
コメント:

すべてのコメントを見る

最終更新:2009年10月20日 15:44