かずきち。の日記

サーバサイドエンジニアのつぶやき

【自営業必見?】3時間位で完全無料でポイント照会やパケット使用量などの会員情報照会システムを作ってみた!

あらすじ

検索システムを作ろうとした場合、検索エンジンなどの大規模なものであればSQLなどを駆使して作成をしますが…
社内システムの場合Googleが提供しているGoogleフォームやGoogleスプレッドシートといった無料範囲でサクッと作ってみました。
利用者2000人弱の利用者情報を検索するシステムになります。
Googleフォームを魔改造して、利用者に情報を返却するプログラムを作ってみます。

【完成したインターフェース】
f:id:kazukichi_0914:20211114223531g:plain

単なるGoogleフォームです。
でもこのGoogleフォームには仕掛けがしてありまして、情報を入力すると裏でデータベースを検索して利用者情報を指定されたメールアドレスに返却するプログラムです。
こんな形でGoogleフォーム知りたい情報を入力してみます。

f:id:kazukichi_0914:20211114223907g:plain

すると裏で情報を検索して、利用量と順位を返却します。

f:id:kazukichi_0914:20211114224120g:plain

先程、入力してもらった連絡先に返却します。

45行のソース
function myFunction() {
  //現在のスプレッドシートを取得
  var spreadsheet = SpreadsheetApp.openById('*******************************');
  //現在のシートを取得
  var sheet = spreadsheet.getActiveSheet();
  //指定するセルの範囲(A1)を取得

  var lastRow = spreadsheet.getLastRow();
  Logger.log(lastRow);

  //通知先メールアドレス
  var range = sheet.getRange("B"+lastRow);
  //値を取得する
  var value = range.getValue();
  Logger.log(value);
  

  // 検索機器管理番号
  var range2 = sheet.getRange("C"+lastRow);
  //値を取得する
  var value2 = range2.getValue();
  Logger.log(value2);

  //現在のスプレッドシートを取得
  var spreadsheet2 = SpreadsheetApp.openById('***');
  var sheet2 = spreadsheet2.getActiveSheet();
        
  var textFinder = sheet2.createTextFinder(value2);
  var cells = textFinder.findAll();
        
  Logger.log('ヒット数 : ' + cells.length);
        
  for(var i=0; i<cells.length; i++){
    Logger.log('セル位置 : ' + cells[i].getA1Notation()) ; //getA1NotationでGASからのセル位置を取得します
    Logger.log(cells[i].offset(0, 1).getValue());
    var giga = cells[i].offset(0, 1).getValue(); //ここで使用量を格納します
    Logger.log(cells[i].offset(0, 2).getValue());
    var rank = cells[i].offset(0, 2).getValue();

    GmailApp.sendEmail(value, "【管理番号】"+value2+"のSIM使用量通知", "今月の使用GB数:"+giga+"GB\n利用順位:"+rank+"位\n\n本システムは当月のSIM使用容量の端末別ランキングを抽出しております。また当システムではシステム検索ログを収集しております。");
    //スプレッドシート値を検索

  }

以上45行で社内簡易検索システムが完成しました。

仕上げは検索値をユーザに返却するタイミングを指定

このままでは単純に値を取得して終わるので、最後にユーザ通知して終わりにしましょう。
=ユーザにメールを返却するタイミングを指定します。

f:id:kazukichi_0914:20211114224939g:plain

トリガーに「スプレッドシートからフォーム送信時」に起動を選択します。

試しに「ABC1234」と検索してみてください。

f:id:kazukichi_0914:20211114232738g:plain

こんなメールが帰ってくるはずです。
このランキング順位は裏で変動するように作り込んでいますので、完飲情報などをリアルタイムで読み込みたい方は参考にしてみてください。
個人経営などで会員情報などを扱っている人はぜひkazukichi.0914+coconala@gmail.comにご相談ください。