このブログを検索

2012年9月24日月曜日

テキスト入力フォーム自作(FormPanelなしver)(1)

■再挑戦

   先週躓いた「フォーム自作・SS保存」するスクリプト。
   やっぱり悔しいというか気持ち悪いので、方法を変えて再挑戦してみます。

   今度は、"FormPanel"を使わない方法でできないか試してみます。
   ("FormPanel"を使ってしまうと、日本語に対応していないですし、使えな~~い。)

   前回は、初めから完成イメージのフォームをすべて作ろうとしてしまい、手間もかかった
   上に報われなかったので、今回はSmall Startでいきます。

   まずは、 一つのボタンを押下で、「TextBox」と「TextArea」の二つの入力項目に
   入力されたデータをスプレッドシートに保存することができるか、からです。


■手順・スクリプト

   今回も、以前作成した「【GAS】テキストボックス入力・SS保存」というスクリプトを
    コピペして作ります。
   スクリプトを開いて、「ファイル」→「コピー作成」。




   保存用スプレッドシートの1行目を作成予定のフォームに合わせて修正します。
    今回は、「タイトル」「本文」の2項目のみで作ってみます。


   「ツール」→「スクリプトエディタ」でスクリプトエディタを開きます。
   どちらでも構わないのですが、今回は先にGUIを作りますので、GUIビルダーを開きます。

   まずはシンプルに、以下の部品のみを使ったフォームにしてみます。

     ①Scroll Panel  : 画面スクロール用
     ②Vertical Panel : 部品を配置するためのメインパネル
     ③Label ×2   : 「タイトル」「本文」などの表示用
     ④TextBox     : テキスト入力用
     ⑤TextArea     : 長文テキスト入力用
     ⑥ Button     : 入力内容をSS保存する等の処理を動かすトリガー用



    【ID】と【名前】、【テキスト】を任意のものに修正します。


   ⑥Buttonのプロパティから「イベント」→「マウスクリック時」に”myClickHandler”を選択。



   これで、GUIはOK。
   保存して、スクリプトエディタに戻ります。
   
   
   さて。スクリプト。
   先に前置きしますと、以下のスクリプトはかなりイケテナイと思います。
   イケテナイ点は下記の2つ。

      ①if文の中にif文を入れ子にする書き方では、入力項目が2つより多くなった時に
       ものすごく冗長な書き方になってしまう。
          例)「入力項目1=’(空欄)’」且つ「入力項目2=’(空欄)’」且つ
             「入力項目3=’あああ’」の場合の処理を書きたい時など
          
      ②elseの処理が書けていないため、TextBoxおよびTextAreaが未入力の場合、
       スクリプトがきちんと動かない。
   
   上記を踏まえた上で、以下のスクリプトをご覧ください。。。


   これで、「保存」・「バージョン管理」・「ウェブアプリケーションとして公開」すれば、
   それとな~~~く、フォームっぽくなります。


■動作テスト

   URLにアクセスすると、下記のような画面が出ます。



   「タイトル」と「本文」に入力し、「登録」ボタンを押下。



   保存用のスプレッドシートに戻ってみると、入力した値が保存されてまーす。


   試しに、「タイトル」と「本文」を未入力のまま「登録」ボタンを押下すると・・・



   保存用のスプレッドシートには、”undefiend”と出ちゃいますーーー。



   ちなみに、if&else文を色々変えて試してみているのですが、やっぱりelse文の
   箇所がうまく動かないようです。
   Google Apps Scriptがどうのという依然に、私がif文の書き方が分かっていない
   ことが原因かと・・・・・・ 
   これは、こっそりJavaScript?のテキスト読んで勉強しま~す。


■実際に試してみたい方へ

   こんな中途半端な状態ではありますが、一応皆様ご自由に使えるように、
   下記のページにURLを載せていますので、お試しくださいませ。

   https://sites.google.com/a/mypleis.com/gas_mypleis/GAS_ALL/12_form_no_formpanel


■予告編

   明日は、「if文のところを修正します!」と言いたいところですが、
   それは一旦置いておいて、「登録」ボタン押下時に、ダイアログボックスを表示する
   ようにしたいと思います。