LoginSignup
4
3

More than 5 years have passed since last update.

GoogleAppScriptを使用して一定時間毎にFirebaseにレコードを追加する

Last updated at Posted at 2017-06-06

環境

FirebasAppライブラリ Ver24

概要

GoogleAppScriptを使用すると時間をトリガーにして、何らかの処理を実行することができます
この仕組みを使用して一定時間毎にFirebaseにレコードを追加するテストをしてみました

Firebaseコンソールの設定

プロジェクトの作成

・「プロジェクトの追加」を押し、プロジェクトを作成する
 ・プロジェクト名と国を設定(例:TestGAS, 日本)
 ・testgas-afa72となった

データベースのシークレットの確認

・左側メニューの「Overview」の隣の歯車アイコンを押し、プロジェクトの選択を押す
・上部メニューの「サービスアカウント」を押す
・「データベースのシークレット」を押す
・「シークレット」と書かれている下の●●●●●を選択し、表示を押す

GoogleAppScriptの作成

・以下にアクセスし「StartScripting」を押す
 https://www.google.com/script/start/
 エディタ画面になり、作成できるようになる
 「myFunction」という空の関数が表示される
・実行ボタンを押し、プロジェクトの保存、プロジェクト名の入力をする(例:TestFirebase)
 GoogleDriveに保存される
 実行されるが空関数なので何にもならない

GoogleAppScriptを開く

・エディタ画面で「ファイル」>「開く」を押すと保存先のGoogleDriveが開く
・作成したプロジェクトを選択し、上部右側の●が縦に3つ並んだボタンを押し、「アプリで開く」>「GoogleAppScript」を押す

FirebaseAppライブラリの追加

・エディタ画面で「リソース」>「ライブラリ」を押す
・「ライブラリの追加」に「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;
}
4
3
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
4
3