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

GAS

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

やりたいこと

みなさんが働く環境は、オフィス、自宅、倉庫、加工場などさまざまだと思います。 「誰が、いつ、どこにいる」 という情報をオンタイムで管理したいことも多いです。

また、現在地をメンバーに共有することで、効率的な人員配置をすることも可能です。「とあるフロアーにメンバーが集まり過ぎているので、入場制限を掛ける」や「玄関ロビーを通過したことを情シスに通知する」など、さまざまな活用方法があります。

そこで、今回は 「QRコードをスマホで撮影すると、位置・ユーザー・時刻情報を管理者にメールで送信する」 アプリを作成します。

※注意点

このツールでは「必要最小限の情報を送信する」ことに特化していますので、 「どんな状態である」「個数はいくつある」 などの、動的な情報を送信することができません。

そのかわり、「スマホカメラで撮影するだけいい。」を実現しています。

用意するもの

  • Googleアカウント
  • Google Apps Script(以降、GAS)
  • Gmail

以上です。さっそく作ってみましょう。

GASを準備する

まず、Googleドライブを開きます。開いたら、左上の [+新規] をクリックします。

メニューリストの中から[その他]をクリックして、 [Google Apps Script] をクリックします。

左上のプロジェクト名をクリックすると、プロジェクト名を変更できます。名前はなんでもかまいませんが、今回は 「はじめてのウェブアプリ」 としました。

ユーザー情報を取得する

GASを実行したユーザーのメールアドレス(Gmailアカウント)を取得するコードはこちらです。

Session.getActiveUser().getEmail();

なので、戻り値を変数に代入しておきます。

const user = Session.getActiveUser().getEmail();

現在時刻を取得する

現在時刻を日本語表記で取得するコードはこちらです。

const d = new Date();
Utilities.formatDate(d, 'JST', 'YYYY月MM月dd日HH時mm分ss秒');

こちらも変数に代入しておきましょう。

const now = Utilities.formatDate(d, 'JST', 'YYYY月MM月dd日HH時mm分ss秒');

現在地を取得する

現在地はURLから取得します。後ほど詳しく説明しますが、このようなコードで取得できます。

e.parameter.locate;

こちらも変数に代入しておきましょう。

const locate = e.parameter.locate;

必要な情報が揃いましたので、スプレッドシートで集計するなど、さまざまな処理を行うことができます。今回はGmailを自動で送信するコードを書きます。

Gmailの下書きを作成する

「Gmailで送信するGAS」を書く際は、テストとして 「下書きを作成する」 GASを書くのがセオリーです。テスト運用をしてみて、問題がなければ後で メソッド名を変更 します。

GmailApp.createDraft(recipient, subject, body);
↓
GmailApp.sendEmail(recipient, subject, body)

Gmailの下書きを作成するために必要な項目は3つです。
– recipient ・・・送信先メールアドレス
– subject ・・・・件名
– body ・・・・本文

この3つを用意するだけです。ただし、必ず 「文字列型」 なので注意しましょう。

Class GmailApp  |  Apps Script  |  Google for Developers

関数を用意する

関数名は「createDraftFromWebApp()」としました。

function createDraftFromWebApp(){
//ここに処理を書く
}

変数を用意する

それぞれ変数を準備します。受信したいメールアドレスは、管理者のメールアドレスなどを設定します。

const recipient = 'admin@hogehoge.com';

件名は自由に設定できます。なるべくわかりやすい名前がいいでしょう。

const subject = '[ウェブアプリ]ユーザーが「現在地」を報告しました';

本文も自由に設定できます。テンプレート文字列を活用して整形しましょう。

const body = `
タイトル:${subject}
ユーザーアカウント:${user}
場所:${locate}
時刻:${now}
`;

関数に書き込む

実際に、画面に書き込んだ状態はこのようになります。

まとめ

以上で、「スマホカメラで位置・ユーザー・時刻情報を送信するアプリ」として、GASの下準備をしました。
次回は、ウェブアプリとして公開する準備をします。お楽しみに。

このシリーズの目次

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