GeminiからGoogleホームへの連携がイマイチになったので、MacroDroidで予定を読ませるマクロを作ったんですが、 予定を配列変数{全予定}に取り込んだ後に、 ・予定数を変数{予定個数}に格納 ・変数{ループカウント}をリセット ┏ループ開始:変数{ループカウント} < 変数 {予定個数} ┃テキストを読み上げる:{lv=全予定[{lv=ループカウント}][Title] ┃変数{ループカウント} + 1 ┗ループ終了 と言うアクションをしていました。 でも、 配列/連想配列を繰り返す と言う、物凄く便利そうなアクションがあることに気付きました。 試しに使ってみました。 折角なので、予定の読み上げはサブルーチン化して、 ①予定を確認するマクロ ②予定を取得するマクロ ③予定を読み上げるマクロ(アクションブロック) にしました。 これで、①のロジックを複数のマクロに入れても、②と③は共通で使えます。 ①予定を確認するマクロ 簡単に言えば、②のマクロを実行する(アクションの下から2行目)だけです。 でも、呼び出す時刻で、今日の予定を知りたいのか、明日の予定を知りたいのかが変わってくるので、 取得する予定のオフセットをグローバル変数{スケジュールオフセット}で指定できるようにしました。アクションの下から4行目ですね。このマクロは朝しか実行しないので、取得したいのは今日の予定です。なので、今の時刻{hour}に"-"を付加して、ほぼ今日の0時からの予定を取得するようにしています。 ②予定を取得するマクロ 予定の取得は取得したいカレンダーの数が多いと長くなってきます(対象カレンダーを変数や配列で指定することができないので個別のロジックが必要ですね)。 でも、個々の取得ロジックは至ってシンプルです。 カレンダーの予定を取得アクション(アクションの3行目)をするだけです。 取得した予定をグローバル変数{取得予定(共通)}に格納しています。 予定の件数を読み上げさせるのも至って簡単でした。グローバル変数{取得予定(共通)}の前に"size="を付与するだけで配列数が得られます(アクションの4行目)。 後は、③を実行するだけです。 カレンダー予定を取得するアクションですが、 ・オフセット開始(分 | 時 | 日) ・持続時間(分...