2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GAS(言語)のみを使って、今 会員管理(アプリ)を作るとしたら

Last updated at Posted at 2020-07-10

ゴール

Googleサービスだけで会員管理システムをつくる
image.png

メリット

誰でもすぐに作ることができる(無料)

早速作る

Googleドライブ会員管理フォルダを作成
作成したフォルダ内でGoogleフォームを作成
GoogleフォームからGoogleスプレッドシートを作成
Googleデータポータルで管理

Googleドライブ内イメージ
image.png

Googleフォーム

Googleフォームの項目は次のようにしました。

  • 氏名
  • 郵便
  • 住所
  • 緯度経度
  • 種別
  • キャッシュレス
  • メモ
  • ファイル

こちらがTableの表題になります。

歯車のマークから送信後に編集をチェック
回答から緑色のスプレッドシートのマークをクリック
image.png

Googleスプレッドシート

Googleスプレッドシートに一覧表が作成されます。
表題を3行目にくるように、1行目に2つ行を挿入します。
別途、他のシートに帳票様式を作り、選んだデータを印刷する仕組みを作ったりしたいので、Noを選んだデータを帳票様式に出力する仕組みの土台を先に作っておきます。※今回は未紹介

つづいてAとBに列を挿入し、Googleフォームの編集用URLを取得する仕組みをつくります。
完成イメージは次のとおりです。
image.png

ソースコード(GAS)

Apps Scriptを利用します。
ツール - スクリプトエディタから次のソースコードを追加し、実行します。

編集用URL取得

function SubmitMail(e){

var sheetId = 'GoogleスプレッドシートのID';
var sheetName = 'シートの名前';

//1_フォームの回答シートを取得
var SS = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);

//2_回答シートを取得
var sheetDates = SS.getDataRange();

//3_フォームIDを保存
var formid = 'GoogleフォームのID';

//4_回答データ一覧をフォームから取得
var formDates = FormApp.openById(formid).getResponses();


for(var i = 0;i<formDates.length;i++){


//5_回答データ一覧をフォームから一番最後の編集用URL取得
var EditableUrl = formDates[Number(i)].getEditResponseUrl();


//6_回答用URLをAセルへ挿入
sheetDates.getCell(i+4, 1).setValue(EditableUrl);
}
}

色々聞かれますが、全てOKでA列に編集用URLが表示されます。
A列に編集用URLが入れば成功です。
B列はとりあえず自分で連番を振ります。

続いて、Googleフォーム登録時に編集用URLと連番を取得できるようにします。
ツール - スクリプトエディタ - ファイル - New - スクリプト ファイルから次のソースコードを新たに追加します。

フォーム登録時_編集用URL取得

function onFormSubmit(e){
  //回答シートのIDを保存
  var sid     = 'GoogleスプレッドシートのID';
  var sname   = 'シートの名前';
  //(1)回答シートを取得
  var SS      = SpreadsheetApp.openById(sid);
  //最終行のAセルを取得
  var RNG     = SS.getSheetByName(sname).getDataRange();
  var lastRow = RNG.getLastRow();
  var rowA    = RNG.getCell(lastRow, 1);
  //最終行のBセルを取得
  var rowB    = RNG.getCell(lastRow, 2);  

  //フォームのIDを保存
  var fid     = 'GoogleフォームのID';
  //(3)フォーム回答データ一覧を取得
  var fRspnss = FormApp.openById(fid).getResponses();
  //(4)フォーム回答一覧から最後のデータ(=一番新しいデータ)の編集用URLを取得
  var url     = fRspnss[Number(fRspnss.length - 1)].getEditResponseUrl();

  //動作確認(URLが正しく取得できているかLogger.logへ出力)
  Logger.log("URL is %s",url);

  //(5)挿入用文字列を作成
  var str = url;
    //Bに連番
 var str2 = Number(lastRow - 3);
  //文字列を最終行Aセルへ挿入
  rowA.setValue(str);  
  rowB.setValue(str2);  
}

編集 - 現在のプロジェクトのトリガーからトリガーを追加します。

  • 実行する関数を選択 > onFormSubmit
  • イベントのソースを選択 > スプレッドシートから
  • イベントの種類を選択 > フォーム送信時

※基本的にはGoogleフォームからレコードを追加するとURLがセルに入るイメージなのですが、エラーや誤ってURLを消してしまった場合、最初に作成した**function SubmitMail(e)**を実行してURLのみ再取得できます。

Googleデータポータル

https://datastudio.google.com/navigation/reporting
作成からエクスプローラ(ベータ版)を選びます。
新しいエクスプローラが作成されるので、新しいデータソースを追加します。
image.png
Googleスプレッドシート - 会員管理シート(作成したGoogleスプレッドシート) - フォームの回答1(シート名)
と選択していきます。
オプション
列のヘッダー名は重複しないようにしてください。
ヘッダーが空の列はデータソースに追加されません。

の下のフォームにA3:Z
と入力(シートの2行目までを除外するため)し、接続をクリックします。
image.png

フィールド編集

  • ファイル > URL
  • 緯度経度 > 地域 - 緯度、軽度
  • 住所 > 地域 - 住所
  • 郵便 > 地域 - 郵便番号

続いてフィールドを追加します。
IDといったフィールドデータをクリックしたら、編集用のGoogleフォームが開くようにしたいので、HYPERLINK関数を使用します。
項目名をIDにし、計算式にHYPERLINK(編集用URL, No)と入力したら保存します。
image.png
適用を押すとエクスプローラー編集画面に戻ります。
image.png

データソースの設定

  • 機関のディメンション > タイムスタンプ(たぶんデフォルト)
  • ディメンション
    • ID
    • 氏名
    • 編集用URL
  • 指標 > 削除
  • 並べ替え > No >昇順
  • グラフのスタイル > 行番号を表示のチェックを外す

Google Map(グラフ)を追加

グラフを追加 > Google Map
image.png

Google Mapが追加されるので、バブルの位置を緯度経度に設定すると、位置情報が可視化される。
image.png

表でデータを選択するとマップも連動し、逆にマップから位置情報を選択するとデータもフィルタされる。

共有から、新しいレポートを作成して共有を選択する。
image.png

レポートが作成される。
image.png

ここに、グラフのデータ、フィルタオプション、登録用フォームのリンク、Googleスプレッドシートのデータのリンク等を設定し、デザインを整える。
Googleデータポータルから会員登録、変更ができ、会員情報のデータベースをマッピングできるクラウドGIS型会員管理アプリの完成。

完成
image.png
※マップは空中写真も設定できます。

まとめ

簡単な会員管理システムを作る方法を紹介してみました。
Googleアカウントのみで作成可能ですので、クラウド運用でき、複数人で編集できます。
Google Chromeがあれば動作するのでデバイスも選びません。セキュリティはGoogleの2要素認証などを設定しておくと一定の水準をクリアできるかと思います。
小さなコミュニティや団体で、コストをかけずに構築したい場合などに有効かと思います。
データをEXCELにエクスポートしたり、Googleスプレッドシートで帳票様式を作成して運用することも可能です。
よければチャレンジしてみてください。

参考

Googleフォーム編集用URLをスプレッドシートの回答に追加する
011-フォーム送信時にスプレッドシートへ編集用URLを挿入する

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?