GoogleAppScriptを使用して一定時間毎にFirebaseにレコードを追加する
※この記事は2017年06月07日にqiitaに投稿した内容です。
環境
FirebaseAppライブラリ Ver24
概要
GoogleAppScriptを使用すると時間をトリガーにして、何らかの処理を実行することができます この仕組みを使用して一定時間毎にFirebaseにレコードを追加するテストをしてみました
Firebaseコンソールの設定
https://console.firebase.google.com/
プロジェクトの作成
・「プロジェクトの追加」を押し、プロジェクトを作成する ・プロジェクト名と国を設定(例:TestGAS, 日本) ・testgas-afa72となった
データベースのシークレットの確認
・左側メニューの「Overview」の隣の歯車アイコンを押し、プロジェクトの選択を押す ・上部メニューの「サービスアカウント」を押す ・「データベースのシークレット」を押す ・「シークレット」と書かれている下の●●●●●を選択し、表示を押す
GoogleAppScriptの作成
・以下にアクセスし「StartScripting」を押す https://www.google.com/script/start/ エディタ画面になり、作成できるようになる 「myFunction」という空の関数が表示される ・実行ボタンを押し、プロジェクトの保存、プロジェクト名の入力をする(例:TestFirebase) GoogleDriveに保存される 実行されるが空関数なので何にもならない
GoogleAppScriptを開く
・エディタ画面で「ファイル」>「開く」を押すと保存先のGoogleDriveが開く ・作成したプロジェクトを選択し、上部右側の●が縦に3つ並んだボタンを押し、「アプリで開く」>「GoogleAppScript」を押す
FirebaseAppライブラリの追加
https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase
・エディタ画面で「リソース」>「ライブラリ」を押す ・「ライブラリの追加」に「MYeP8ZEEt1ylVDxS7uyg9plDOcoke7-2l」を入力し、「追加」を押す ・「FirebaseApp」と表示されるので「バージョン」を選択する(例:24)
プログラム
このプログラムでは10分毎にレコードを2つ追加しています
function setTrigger()
{
//十分毎に処理を実行
var executeFuncName = "createDatas";
deleteTriggers( executeFuncName );
ScriptApp.newTrigger( executeFuncName ).timeBased().everyMinutes( 10 ).create();
}
function deleteTriggers( executeFuncName )
{
//登録されているトリガーを削除
var triggers = ScriptApp.getProjectTriggers();
for( var i = 0; i < triggers.length; i++ )
{
if ( triggers[ i ].getHandlerFunction() == executeFuncName )
ScriptApp.deleteTrigger( triggers[ i ] );
}
}
function createDatas()
{
var nowDate = new Date();
var formattedNowDate = Utilities.formatDate( nowDate, "Asia/Tokyo", "yyyyMMddHHmmss");
Logger.log( formattedNowDate );
var firebaseUrl = "https://testgas-afa72.firebaseio.com/";
var secret = "P1155P0zGvA8NMFVVEM25hcHdXNvZWELGTsa8SBx";
var firebase = FirebaseApp.getDatabaseByUrl( firebaseUrl, secret );
var userDatas = [];
for( var i = 0; i < 2; i++ )
{
var id = randomId( 8 );
userDatas.push(
{
id:id,
score:100+i,
date:formattedNowDate
});
}
for( var i = 0; i < userDatas.length; i++ )
{
var id = userDatas[ i ].id;
firebase.setData( "users/" + id, userDatas[ i ] );
}
}
function randomId( length )
{
//適当にランダムで返す
var chars = "abcdefghijklmnopqrstuvwxyz0123456789";
var charLength = chars.length;
var str = "";
for( var i = 0; i < length; i++ )
str += chars[ Math.floor( Math.random() * charLength ) ];
return str;
}