あらすじ
検索システムを作ろうとした場合、検索エンジンなどの大規模なものであればSQLなどを駆使して作成をしますが…
社内システムの場合Googleが提供しているGoogleフォームやGoogleスプレッドシートといった無料範囲でサクッと作ってみました。
利用者2000人弱の利用者情報を検索するシステムになります。
Googleフォームを魔改造して、利用者に情報を返却するプログラムを作ってみます。
【完成したインターフェース】
単なるGoogleフォームです。
でもこのGoogleフォームには仕掛けがしてありまして、情報を入力すると裏でデータベースを検索して利用者情報を指定されたメールアドレスに返却するプログラムです。
こんな形でGoogleフォーム知りたい情報を入力してみます。
すると裏で情報を検索して、利用量と順位を返却します。
先程、入力してもらった連絡先に返却します。
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行で社内簡易検索システムが完成しました。