どうも。つじけ(tsujikenzo)です。このシリーズでは 「スマホカメラで位置・ユーザー・時刻情報を送信するアプリ」 について全3回でお送りします。今日は2回目です。
前回のおさらい
前回は、GASの下準備として、必要な変数を用意しました。さらに、実行時に呼び出される createDraftFromWebApp()関数 を書きました。
今回は、ウェブアプリとして公開する準備をします。
doGet()関数の設置
createDraftFromWebApp()関数を動かすために、doGet()関数を用意します。
function doGet(){
createDraftFromWebApp();
}
doGet()関数は、ウェブアプリとして呼び出された場合、さまざまな情報を イベントオブジェクト として、関数に渡すことができます。通常は引数に(e)を設定してイベントオブジェクトを受け取ります。
function doGet(e){
createDraftFromWebApp();
}
このイベントオブジェクト(e)は、関数内で使い回すことができますので、 createDraftFromWebApp()関数にも引数として渡します。
function doGet(e){
createDraftFromWebApp(e);
}
戻り値の設定
doGet(e)関数が正常に実行された場合、ユーザーになにかメッセージを表示したいところです。
たとえばこのようなメッセージが表示されると、ユーザーは安心ですね。
送信完了しました。
これは、doGet()関数の、最終行に一文を追加することで可能です。
function doGet(e) {
createDraftFromWebApp_(e);
return ContentService.createTextOutput('送信完了しました。');
}
プライベート関数の設定
関数の後ろにアンダースコア(_)を追加すると、 プライベート関数化 することができて安全です。
呼び出し元の関数が限られている場合などは、プライベート関数化しましょう。
function doGet(e) {
createDraftFromWebApp_(e);
}
function createDraftFromWebApp_(e) {
}
完成したコードはこちらです。
/**
* 現在地情報をパラメータにもつウェブアプリから送信される
*
* @param {object} イベントオブジェクト
* @return テキストメッセージ
*/
function doGet(e) {
createDraftFromWebApp_(e);
return ContentService.createTextOutput('送信完了しました。');
}
/**
* doGet()関数からイベントオブジェクトを受け取ってメールの下書きを作成する関数
*
* @param {object} イベントオブジェクト
* @return none
*/
function createDraftFromWebApp_(e) {
//ユーザーアカウント取得
const user = Session.getActiveUser().getEmail();
//現在時刻を取得
const d = new Date();
const now = Utilities.formatDate(d, 'JST', 'YYYY月MM月dd日HH時mm分ss秒');
//現在地を取得
const locate = e.parameter.locate;
//Gmail用の変数を準備
const recipient = 'admin@hogehoge.com';
const subject = '[ウェブアプリ]ユーザーが「現在地」を報告しました';
const body = `
タイトル:${subject}
ユーザーアカウント:${user}
場所:${locate}
時刻:${now}
`;
//下書きを作成
GmailApp.createDraft(recipient, subject, body);
}
2行目の 「現在地情報をパラメータにもつウェブアプリから送信される」 というコメントは、次回解説します。
ウェブアプリとしてデプロイ(公開)する
コードが完成したら、右上の [デプロイ] から [新しいデプロイ] をクリックします。
「新しいデプロイウィンドウ」の左上にある [歯車] をクリックして、 [ウェブアプリ] をクリックします。
デプロイ設定画面が表示されたら、
1. 「新しい説明文」にはバージョン情報などを記載しましょう。
2. 「ウェブアプリ」は「ウェブアプリケーションにアクセスしているユーザー」に設定します。
3. 「アクセスできるユーザー」は「Googleアカウントを持つ全員」に設定します。
4. 最後に「デプロイ」をクリックします。
(※無料のgmail.comユーザーアカウントの場合、正しい設定方法が異なるようです。この設定はGoogle Workspace Basicプラン以上で確認しています。)
「デプロイを更新しました」と表示されます。最下部には、ウェブアプリの URL が表示されています。 [コピー] をクリックするとコピーできます。
コピーしたら、 [完了] をクリックして、デプロイ設定画面は閉じます。
ウェブアプリのURLの確認
ウェブアプリのURLはこのような構造になっています。URLの末尾が [exec] になっているのが特徴的です。
https://script.google.com/macros/s/{デプロイID}/exec
URLはブラウザにコピペすると実行できます。(今回はまだ実行しません。あとのお楽しみです。)
まとめ
以上で、 「ウェブアプリの公開準備をする」 をお送りしました。ウェブアプリのURLが発行されましたので、ブラウザなどでアクセスすると、実行できます。
次回は最終回で、 「URLにパラメータを設定する」 をお送りします。お楽しみに。
このシリーズの目次
- [業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール1ー
- [業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール2ー
- [業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール3ー