Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2078

【GAS】doGet関数でURLのパラメータを受け取りその内容に応じた処理をする

$
0
0
url

photo credit: mkorsakov Hegelists International via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptを使って簡単なワークフローを作っていきたいと思います。

例えば備品購入依頼のワークフローを考えます。

動作としては

  1. GASから特定のユーザー(たぶん上長)にHTMLメールを送信
  2. 受け取ったユーザーが「OK」または「NG」ボタンのリンクを踏む
  3. GASのWebアプリケーションにアクセスして、踏んだボタンに応じた処理をする

と言った動きになります。

さて、前回お送りした記事ですが、Google Apps Scriptを使ってGmailからHTMLメールを送信する方法についてお伝えしました。

Google Apps ScriptでGmailからHTMLメールを送信する方法
Google App ScriptではGmailを操作してメールを送信することができます。実はその本文としてシンプルなテキストメールだけではんくHTMLメールを送ることができます。今回はその方法をお伝えします。

つまり、上記のフローでいうと1の部分は実現できたわけです。

今回は、2と3の部分を仕込んでいきたいと思います。

どういう方法を使うかというと、URLにパラメータを仕込んでおいて受け取ったパラメータにより処理をするという方法です。

では、Google Apps ScriptのWebアプリケーションでURLのパラメータを受け取って処理をする方法です。

行ってみましょう!

doGet関数でHTMLページを表示する

まずはおさらいですが、GASで作成したWebアプリケーションにアクセスしたときに動作する特殊な関数としてdoGet関数というものがあります。

例えば、プロジェクト内に「hello.html」というHTMLファイルを作成しておき、以下スクリプトを仕込みます。

function doGet() {
  return HtmlService.createTemplateFromFile("hello").evaluate();
}

ここでは、ザックリいうとhello.htmlに記載したHTMLをブラウザに返す処理をしています。

それでスクリプトエディタのメニューから「公開」→「ウェブアプリケーションとして導入」により、URLでアクセスができるようになります。

https://script.google.com/macros/s/{…}/exec

{…}の部分はウェブアプリケーション固有の長々としたIDは入ります。

ブラウザからこのURLにアクセスすると、「hello.html」が表示されるという流れでしたね。

詳しくは以下記事をご覧ください。

Google Apps ScriptでWebアプリケーションを作る最初の一歩
初心者向けにGoogle Apps ScriptによるWebアプリケーションの作り方を解説していきます。まずは、最初の一歩して静的なWebページを表示するWebアプリケーションを作成していきます。

WebアプリケーションのURLに付与したパラメータを受け取る

さて、ここからが本題です。

doGet関数はURLに仕込んだパラメータを受け取ることができます。

URLにパラメータを付与する方法

URLに仕込んだパラメータというのは、例えば

https://script.google.com/macros/s/{…}/exec?name=takahashi?age=41

でいうところの

  • name:takahashi
  • age:41

の部分です。つまり、URLの後に

?パラメータ名=値

を付与することで任意のパラメータ名に対して値を付与してURLにアクセスできるわけです。そしてこのパラメータ名と値のセットは、上記例のように複数付与することも可能です。

備品購入依頼であれば

https://script.google.com/macros/s/{…}/exec?answer=ok

または

https://script.google.com/macros/s/{…}/exec?answer=ng

というパラメータ付のURLへのリンクを、送ったHTMLメールの「OK」「NG」ボタンに仕込めば良いということです。

doGet関数でパラメータを受け取る

doGet関数でパラメータを受け取る場合はこのようにします。

まず引数eを指定して

function doGet(e) {
‘処理
}

とします。

この引数eはイベントオブジェクトとして、URLに付与したパラメータを含む様々な情報が格納されています。

このイベントオブジェクトから、任意のパラメータの値を取得するには

e.parameter.パラメータ名

とします。

URLに付与したパラメータにより表示するHTMLファイルを変える

では一つ例を示しましょう。

ウェブアプリケーションのURLにパラメ―タ名「answer」を付与します。その値としては「ok」または「ng」をとるとします。

それで、パラメータanswerが「ok」だった場合は、以下「ok.html」を


  
    
  
  
    

備品購入申請を承認しました

あなたは備品購入申請を承認しました

「ng」だった場合は、以下「ng.html」を表示したいとします。


  
    
  
  
    

備品購入申請を否認しました

あなたは備品購入申請を承認しませんでした

ウェブアプリケーションへのアクセスにより動作させますから、doGet関数が必要なのですが、どんなスクリプトになりますでしょうか?

例えばこんなスクリプトです。

function doGet(e) {
  return HtmlService.createTemplateFromFile(e.parameter.answer).evaluate();
}

シンプルですね!

パラメータのanswerの値と、HTMLファイル名が一致していますので、パラメータの値をそのままcreateTemplateFromFileの引数として渡しちゃっています。

パラメータによるブラウザ表示の結果

パラメータanswerの値として「ok」を付与してアクセスした場合は

GASのdoGet関数でパラメータokを受け取った場合

パラメータanswerの値として「ng」を付与してアクセスした場合は

GASのdoGet関数でパラメータngを受け取った場合

という表示になります。

なお、パラメータを付与しない場合は以下のように

「undefined」というHTMLファイルは見つかりませんでした。

という表示になります。

GASのdoGet関数でパラメータが存在していない場合

まとめ

非常に簡易的ではありますが、メールで踏んだリンクでWebアプリケーションにアクセスして、パラメータを見て処理を分けるといった処理をGoogle Apps Scriptで実現することができました。

今回お伝えした、doGet(e)関数でイベントオブジェクトからパラメータを取得するテクニックは、様々なワークフローツールの基本になるかと思いますので、ぜひご活用下さい。

次回以降、備品購入申請のワークフローを作り込んでいきたいと思います。

どうぞお楽しみに!

連載目次:初心者でも作れるGASによる簡単ワークフロー

スプレッドシート、Gmail、フォーム…Google Apps Scriptで操作できるアプリケーションはまさに「ワークフロー」を作成する上で必要なものが揃っています。ということで、このシリーズでは初心者でも簡単に作れるワークフローの作り方について解説をしていきます。
  1. Google Apps ScriptでGmailからHTMLメールを送信する方法
  2. 【GAS】doGet関数でURLのパラメータを受け取りその内容に応じた処理をする

Viewing all articles
Browse latest Browse all 2078

Trending Articles