Firebase functions と Google Apps Script で毎日バックアップ&ログ削除する

カテゴリー: スニペット,

Google App Script でテキトーな時間帯に HTTPリクエストを送り、Firebase functions でバックアップと指定のデータ削除をしたりする俺用サンプルコード。

index.js (firebase functions)

// httpリクエストで指定DBを削除
exports.dailyBatchJob = functions.https.onRequest((req, res) => {
    return admin.database().ref('/test').remove()
    .then(() => {
      res.send('dailylog removed');
      return 0;
    })
    .catch(error => {
      res.send(error);
    });
});

「/test」を削除するコードです。

deploy 後は Firebase functions のダッシュボードに関数が表示されます。リクエスト先のURL(この場合は末尾 dailyBatchJob)も見えるのでそこへアクセスすると、Firebase functions が実行されます。とりあえずブラウザでアクセスして反応を確かめておきましょう

Google Apps Script

function myFunction() {
  var urlFetchOption = {
    'method' : 'get',    
    'contentType' : 'application/json; charset=utf-8',
    'muteHttpExceptions' : true
  };

  // Back Up
  var response = UrlFetchApp.fetch('https://[xxxxxx-yyyyy].firebaseio.com/.json?format=export&auth=[KEY]', urlFetchOption);
  var myFolder = DriveApp.getFolderById('[zzzzzzzzzzzzzzzzzz]');
  var today = Utilities.formatDate( new Date(), 'Asia/Tokyo', 'yyyyMMddHHMMSS')
  myFolder.createFile(today, response.getContentText(), MimeType.PLAIN_TEXT);

  // Remove
  var testRemove = UrlFetchApp.fetch('https://us-central1-[xxxxxx-yyyyy].cloudfunctions.net/dailyBatchJob', urlFetchOption);
}

※ バックアップ部分のコードの詳細はfirebase活用調査編③【databaseのバックアップ】 – エス・スリーBLOGをご覧ください。

バックアップ部分での [xxxxxx-yyyyy] はプロジェクトアドレスです。[KEY]はFirebaseのシークレットキー。[zzzzzzzzzzzzzzzzzz]は、バックアップ先であるグーグルドライブのフォルダIDです。バックアップしたいグーグルドライブのフォルダを表示した際のアドレス https://drive.google.com/drive/folders/{フォルダID} 部分になります

また、削除部分での 「https://us-central1-[xxxxxx-yyyyy].cloudfunctions.net/dailyBatchJob」 も同様で、「dailyBatchJob」部分は Firebase functions の関数名が割り当てられてるはずです。

Google Apps Script が完成したら、即時実行をクリックして動作を確かめてください。

バックアップが作成され、指定の Firebase データが削除されたら完了です。好きな時間に動作させましょう。


関連記事

関連記事はまだありません

スニペット」のBookmark
「スニペット」記事一覧