[業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール2ー

GAS

どうも。つじけ(tsujikenzo)です。このシリーズでは 「スマホカメラで位置・ユーザー・時刻情報を送信するアプリ」 について全3回でお送りします。今日は2回目です。

前回のおさらい

前回は、GASの下準備として、必要な変数を用意しました。さらに、実行時に呼び出される createDraftFromWebApp()関数 を書きました。

[業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール1ー
どうも。つじけ(tsujikenzo)です。このシリーズでは 「スマホカメラで位置・ユーザー・時刻情報を送信するアプリ」 について全3回でお送りします。今日は1回目です。やりたいことみなさんが働く環境は、オフィス、自宅、倉庫、加工場...

今回は、ウェブアプリとして公開する準備をします。

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にパラメータを設定する」 をお送りします。お楽しみに。

このシリーズの目次

  1. [業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール1ー
  2. [業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール2ー
  3. [業務効率化][GAS]スマホカメラで位置・ユーザー・時刻情報を送信するアプリーロール3ー
タイトルとURLをコピーしました