Firebaseと連携する
新規プロジェクトの作成
秘密鍵の作成
ダウンロードしたJSONファイルはgoogle-home-voicetext-docker/myappsに格納してください。
Cloud Firestoreの設定
Cloud Firestoreのセキュリティルール
環境変数の設定
# export FIREBASE_DATABASE_URL={databaseURLの値}
# export FIREBASE_SECRET_KEY_PATH=/myapps/{JSONファイルのファイル名}
firestore.jsの起動
# node firestore.js &
Google Apps Scriptと連携する
参考URL
Google Apps Scriptの画面
プロジェクトの作成
Google Drive > 新規 > その他 > Google Apps Script もしくは 「アプリを追加」で新規プロジェクトを作成
コード.jsを編集、保存
// Firebase Cloud Firestoreに格納されたメッセージを更新する
function updateMessage(message) {
const email = "{JSONファイルのclient_emailの値}";
const key = "{JSONファイルのprivate_keyの値}";
const projectId = "{JSONファイルのproject_idの値}";
const firestore = FirestoreApp.getFirestore(email, key, projectId);
const data = {
"message": message
};
firestore.updateDocument("googlehome/chant", data);
}
// 動作確認用
function testMessage() {
updateMessage("テストです");
}
ライブラリの追加
メニューから
リソース > ライブラリ
「ライブラリを追加」に1VUSl4b1r1eoNcRWotZM3e87ygkxvXltOgyDZhixqncz9lQ3MjfT1iKFw を入力
動作確認
Googleカレンダーと連携
// カレンダーから1分以内に開始するイベントを取得し、タイトルをFirebase Cloud Firestoreに書き込む
function main() {
const now = new Date();
const startTime = new Date(now.getTime()); // 開始時刻(現在時刻)
const endTime = new Date(now.getTime() + (1 * 60 * 1000)); // 終了時刻(現在時刻プラス1分)
// IDを指定してカレンダーを取得
const myCals = CalendarApp.getCalendarById("{GoogleカレンダーのID(メールアドレス)}");
const myEvents = myCals.getEvents(startTime, endTime); // 開始時刻と終了時刻の間に発生するイベントをカレンダーから取得
if (!myEvents) return;
for ( var index_e in myEvents) {
const eventStartTime = myEvents[index_e].getStartTime();
// 取得したイベントが1分以内に開始する場合はFirestoreを更新
if (eventStartTime.getTime() > (startTime.getTime())) {
updateMessage(myEvents[index_e].getTitle());
}
}
}
この関数をコード.gs
に追加して1分間隔で実行するトリガーを作成すると、Googleカレンダーに書き込んだスケジュールが時間になると自動的に読み上げられます。