02_意見集約アプリ

【02_意見集約アプリ】意見集約アプリ〔解説編 Vol.1〕ユーザ情報をPOST処理して、起動時の状態を分岐せる

記事概要

この記事は、前の記事でご紹介した意見集約アプリの解説記事になります。今回は、ユーザ情報をPOST(サーバに送信)してアプリの立ち上げ状態を分岐させる方法をご説明します。

意見集約アプリのファイル構成

前の記事でご紹介したアプリは、テーブル形式フォーム「どこでも帳簿」(こちらの記事を参照)を少し修正したものです。

このアプリのプロジェクトには、以下の4つのファイルがあります。

  • 初期画面.gs・・・最初に起動するスクリプト
  • OpenFoam.HTML・・・パスワード入力画面のテンプレートファイル
  • コード.gs・・・メインのスクリプトファイル
  • INDEX.html・・・メインのテンプレートファイル

黄色い部分があるのがこのアプリの特徴です。それぞれのファイルのコードは後述の記事を参照ください。

GoogleAppsScriptのプロジェクト画面では、以下の様に4つのファイルが見えているはずですが、順に内容を説明していきます。

画像8

アプリを起動する際にユーザ情報をPOST(サーバに送信)するスクリプトとテンプレート

まずは「初期画面.gs」のご説明から。

画像8

このスクリプトの役割は、起動時にパスワードを入力する以下の画面を表示させることです。

画像1

コードの鍵となる部分は、以下となります。

コードはスクリプトです

function doGet(e){

//初期画面であるOpenFoam.HTMLをWEB表示先として取得
var myOpenHTML = HtmlService.createTemplateFromFile(‘OpenForm’);
return myOpenHTML.evaluate().addMetaTag(“viewport”, “width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0”);

}


コードの中身は単純で、URLにアクセスすると発動するdoGET関数()内で、単に「OpenForm」 という名前のテンプレートをWEBサイトとして表示させているだけです。

WEBサイトとしてテンプレートを表示させるコードの詳説は、この記事を参考にしてください

次にテンプレート「OPEN.html」についてご説明します。

画像8

このテンプレートで、あらかじめ知らせておいたパスワードをユーザーに入力してもらいます。この画面には〔送信する〕ボタンがあり、ボタンのクリックにより、受け手であるスクリプトにパスワードをPOST送信します。

コードの鍵となる部分は、以下となります。

コードはHTMLです

<form method=”post” action=”★このプロジェクトのURL★”
<p>
・・<!—相手先では、e.parameter.<name要素名>で取り出せます—>
・・<label>パスワード:<input type=”text” name=”PW”</label>
</p>
<p>
・・<input type=”submit” value=”送信する”
</p>
</form>

上記の黄色い部分が処理のメインで、このコードによってテンプレート(クライアントPC側)からスクリプト(サーバ側)に情報を送信してメインのスクリプトを起動するのですが、こうした処理の事をPOST処理といいます。

クライアントPC側からサーバ側にデータを送信する方法としては、Google.script.runスクリプト内関数(変数)による方法(こちらの記事参照)がありますが、POST処理では、新しいウィンドウがオープンして画面遷移するのが特徴です。

POST処理の記述方法は込み入っているので、次の章で少し詳しく説明します。

POST送信のHTMLコードの書き方を覚えよう!

ユーザーから情報を得るための「POST送信」についての一般的なHTMLコードの書き方をご説明します。以下の①②③の順に記述していきます。

①<Form>タグでPOST処理であること、および投函先を宣言する。

以下の様に<Form>タグを書き、そこでmethodプロパティでPOST処理であると宣言し、投函先をactionプロパティで示します。

<Form  method=”post” action=”投函先URL” ・・・ </Form>

 


②<input>タグで入力要素を記述する

<Form>タグ内で<input>タグで入力する要素を記述する。また、要素の種類を typeプロパティで、この要素を判別する名前をnameプロパティ示しておく。

INPUT要素は閉じるための閉じタグ</input>は不要です。また、nameプロパティは、POSTを受け取った側での処理に使います。

<input type=”タイプ” name=”要素名”

表示結果は type=~ の記載内容により変わります。

type=”text”の場合
画像2
type=”month”の場合
画像3
ttype=”range”の場合
画像4

③<Form>タグ内で、もう一度<input>タグを使って、ユーザーが入力した情報をサーバに送る「送信ボタン」を以下の要領で記述する。

typeプロパティsubmitとすることで送信ボタンになります。(valueの値はボタンに表記するテキストで、なんでもかまいません)

<input type=”submit” value=”送信する”


画像9

以下が表示の様子で、ユーザが以下のinput要素に情報を入れているところですが、このあと「送信する」ボタンを押すと、POST送信が終了します。

画像12

その後はどう処理されるのでしょうか。それについて次回の記事でご説明します。