GAS x HtmlでWebアプリを作ってみよう③ 検索結果ページの作成

YouTube検索アプリでは、検索ワードを入力して、検索ボタンをクリックすると、検索結果を表示するページに遷移します。
今回は、この検索結果ページを作っていきましょう。

検索結果ページ用のhtmlファイルを用意する

新たにHTMLファイルを立ち上げ名前を付けます。
今回は「result」としました。
下図のようにコードを記述します。
こちらにもcontainerクラスのCSSを当てますので、オレンジ枠の記述をお忘れなく。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?>
  </head>
  <body>
    <div class="container">
      <h1>検索結果</h1>
    </div>
  </body>
</html>

doPost(e)関数

コード.gsファイルにdoPost(e)関数を図のように記述します。
ScriptApp.getService( ).getUrl( )で最新のデプロイURLを取得できます。その値をtemplatedeployUrlとして格納します。
同じ1行をdoGet( )関数にも追加します。

function doGet() {
  const template = HtmlService.createTemplateFromFile('index');
  template.deployUrl = ScriptApp.getService().getUrl();
  const htmlOutput = template.evaluate();
  return htmlOutput;
}

function doPost(e) {
  const template = HtmlService.createTemplateFromFile('result');
  template.deployUrl = ScriptApp.getService().getUrl();
  const htmlOutput = template.evaluate();
  return htmlOutput;
}

<form>タグにpostメソッドを追記する

index.htmlファイルの<form>タグに method="post" action="<?!= deployUrl ?>"を追記します。
これで、検索ボタンをクリックした時に検索結果ページに遷移すれば成功です。
保存して、新しくデプロイし、URLをクリック。
続いて、入力ページの検索をクリックしてみましょう。

検索結果ページに遷移できました!

<input>タグにname属性を追記する

index.htmlファイルの<input>タグにname="query"を追記します。
このname属性を使えば、<input>タグに入力された検索ワードを取得することができるようになります。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?>
  </head>
  <body>
    <div class="container">
      <h1>YouTube 検索</h1>
      <p>検索ワードを入力して、検索ボタンを押してください。</p>
      <p>関連動画25件のタイトル、リンク、再生数、いいね数が取得できます。</p>
      <form method="post" action="<?!= deployUrl ?>">
        <input type="text" name="query">
        <button type="submit">検索</button>
      </form>
    </div>
  </body>
</html>

イベントオブジェクトから検索ワードを取得する

doPost(e)の引数に与えられた「e」とはイベントオブジェクトのことで、POSTリクエストされた時の情報がこの引数eに格納されています。
ではまず、図のように一時的にconsole.log(e);として、eの中身を確認してみましょう。

検索ワード入力画面から「大谷翔平」と入力して、検索ボタンをクリックします。
画面が検索結果ページに遷移すればOKです。

続いて、スクリプトに戻り、左メニューから「実行数」をクリックします。

一番上のdoPostをクリックします。
ログが開いて、eの中身が表示されました。
複数の情報(プロパティ)があることがわかります。
入力した検索ワード情報もしっかり格納されています。
オブジェクト構造としては、parameterプロパティの子プロパティとして、<input>タグのname属性の値とした「query」がセットされており、その値が入力ワード(大谷翔平)となっています。
つまり、e.parameter.queryとすれば、検索ワードが取得できるわけです。

次回につづく

次回、シリーズ④では、いよいよアプリの心臓部分である検索機能を実装していきます。

シリーズ目次:GAS x HtmlでWebアプリを作ってみよう

  1. GAS x HtmlでWebアプリを作ってみよう① はじめの一歩
  2. GAS x HtmlでWebアプリを作ってみよう② CSSでスタイリング
  3. GAS x HtmlでWebアプリを作ってみよう③ 検索結果ページの作成
  4. GAS x HtmlでWebアプリを作ってみよう④ 検索機能の実装

GAShtml,Webアプリ

Posted by botw