#環境
FirebasAppライブラリ 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;
}