Site cover image

ふつうのITエンジニアの独り言

本業はAndroidとiPhoneのアプリ開発のエンジニアです。将来はフリーランスで海の近くで妻とのんびり暮らすことを夢見て、幅広くIT技術に触れていきたいと思います。このブログはその備忘録と私のポートフォリオとして活動記録を記すものです。

自分の死後に嫁や子どもにメッセージを自動で配信するサービスをタダで用意したい(その2) ~生存確認のWebサイトを作成~

目次


生存確認用URLの作成


メールに添付してアクセスするだけで生存が確認できるという簡単な仕組みを、Googleのスプレッドシート+GASで実現する。

GoogleアカウントにログインしてスプレッドシートとGASが編集できるところまでは、以下のサイトが参考になる。

以降の解説は、GASが使える状態となっていることを前提として話を進める。

今回作成する生存確認用のURLでは、指定のURLにアクセスして、そのアクセス時間を記録しておくという単純なものを用意する。Google Apps Scriptでは動的にコンテンツを作成して返すWebアプリを作成する仕組みが用意されている。今回はこれを使って、生存確認用URLを作成したいと思う。Webアプリについては、正直言ってあまり詳しくはないので、詳しくは以下のサイトを参考にしてください。

URLアクセス時のログ記録シートを用意する

スプレッドシート[生存確認システム]を作成し、”SurvivalCheckLog”というシートを追加した。指定のURLにアクセスするとA列には最終のタイムスタンプがA1に上書き更新されていくことで、最終生存確認日が分かるような仕組みとする。

URLアクセス時に時刻を更新する

GASに、doGet関数を用意する。doGetはデプロイしたサイトへのアクセス時に呼び出される関数。doGetが呼ばれると、単純にA1のセルに日付を書き込み、HTMLは生存確認が完了したメッセージのみを表示する。

/**
 * デブロイしたURLへのアクセスを検出して[SurvivalCheckLog]シートにログを保存する
 * @return {object} HTMLに出力するメッセージ
 */
function doGet(e) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SurvivalCheckLog");
  sheet.getRange(1,1).setValue([new Date()]);

  // メッセージを表示する
  return HtmlService.createHtmlOutput("生存確認が完了しました。");
}

Webアプリのデブプロイ

Apps Scriptの編集画面の右上にデプロイボタンがあるので、これをクリックすると、新しいデプロイ/デプロイを管理/デプロイをテストが表示される。今回は新規でデプロイすることになるので、新しいデプロイを選択する。

アクセスできるユーザーは、生存確認を行うのが自分だけなので、”自分のみ”にして、右下のデプロイボタンをクリック。

生成されたウェブアプリのURLをコピーして、Webブラウザで確認すると、無事に生存確認が完了した。

肝心のスプレッドシートのログはというと、A1セルにはアクセス日時が記録されている。

まとめ

 今回は、Google Apps Script + スプレッドシート + Webアプリを利用して、生存確認を行うためのURL作成を行った。このURLは固定のURLであり、動的に変更する訳では無いが、今回の要件に置いては特に問題ない。また、URLのアクセスも自分のGoogleアカウントでのみアクセスできる制限が設けられているため、他人にURLをクリックされる心配もない。

 次回は、生存確認メールを送信する部分を作っていく。