概要
先日 IFTTTによる、Space開始をGmailで通知するアプレットの作成を行った。
しかし、思いの他レスポンスが遅く。
20時40分ごろに開始されたSpacesに対して、21時17分ごろに通知メールで飛んできた。
30以上遅れての通知で遅いなぁ、、、。
というわけで。今度は Microsoft PowerAutomate
で同様のことをしてみた。
Microsoft PowerAutomate
特徴
- 条件分岐ができる。
- 1つのトリガーに複数の処理を作ることができる。
- Gmailで任意のアドレスにメール送信ができる。
- 複数のTwitterと連携ができる。
- 複数のGoogleアカウントと連携ができる。
-
.NET Passport
Microsoftアカウント
で一応それなりに無料で使えるっぽい。 - UIが日本語 (江戸っ子にはありがたい)
結論
- Twitterの検索は1時間周期。
- メールの本文を自分で作るのは柔軟性がある反面、テンプレートがザコなので面倒くさい。
- ツイートで@マークつきの投稿が出来ない (発言元のアカウントへリンクできない)。
- 複数アカウント使えるのは便利。 ⇒ 検索垢と投稿垢を分けられる、など。
- 無料でここまでできるのは、正直ありがたい。
- しかし、
Power Automate Desktop
(≒ RPA) の情報に掻き消されて、Power Automate
の 有償/無償 とで ``クラウド フロー``` にどう差が出るのかわからない。
フローの作成
⓪ サマリー
① トリガー
- 条件
-
-from@myaccount
: 自分のアカウントを-
で指定して、自分を除外する。 -
lang:ja
: 日本語に絞る -
filter:spaces
: スペースの投稿に絞る
-
-from:@myaccount lang:ja filter:spaces
検索条件の応用で、色々と活用ができる。
② アクション
① Gmailを送信する。
自分自身のアドレスをベタに指定するので良いと思うけど。+
でGmailのサブ アドレス機能を使えば、フィルタリングは楽かと思う。
【Twitter Space Notif】@{triggerOutputs()?['body/UserDetails/FullName']} ( @{concat('@', triggerOutputs()?['body/TweetedBy'])} ) @{triggerOutputs()?['body/TweetText']}
<p>
@{triggerOutputs()?['body/UserDetails/FullName']} ( <a href="@{concat('https://twitter.com/', triggerOutputs()?['body/TweetedBy'])}"> @{concat('@', triggerOutputs()?['body/TweetedBy'])} </a>)<br>
<img src="@{triggerOutputs()?['body/UserDetails/ProfileImageUrl']}" alt="@{triggerOutputs()?['body/TweetId']}"><br>
@{triggerOutputs()?['body/CreatedAtIso']}
</p>
<p>
@{triggerOutputs()?['body/TweetText']}
</p>
<p> </p>
<p>@{concat('https://twitter.com/', triggerOutputs()?['body/TweetedBy'], '/status/', triggerOutputs()?['body/TweetId'])}</p>
<p> </p>
<p>powerd by microsoft powerautomate.</p>
② ツイートする。
started spaces by @{triggerOutputs()?['body/UserDetails/FullName']} ( @{concat('@', triggerOutputs()?['body/TweetedBy'])} ) .
@{triggerOutputs()?['body/CreatedAtIso']}
@{triggerOutputs()?['body/TweetText']}
補足
属性と関数
Twitterの属性
一応以下の6項目がわかれば十分かと。
項目 | 説明 | (補足) |
---|---|---|
ユーザー名 | ユーザーのスクリーン ネーム | (ツイートのTwitterアカウント) |
名前 | ユーザーの名前 | (ツイートのアカウントのプロフィールの名前) |
プロフィール画像URL | プロフィール画像URL | (ツイートのアカウントのプロフィールのアイコン画像) |
作成日時 | ツイートが投稿された時刻 | (ツイートの投稿日時) |
ツイート ID | ツイートのID | (ツイートのID) |
ツイート テキスト | ツイートのテキスト コンテンツ | (ツイートの本文) |
※中には反復処理が必要な属性があるため、選ぶとフローが変わってしまうので注意が必要。
関数を用いて情報を作る
アカウント名に@をつける
ユーザー名
には @
がついていないため、concat
関数を使って文字列を結合する。
concat('@', triggerOutputs()?['body/TweetedBy'])
ツイート ユーザーのURL
メールにツイートのアカウント元を乗せる際に、ハイパーリンクもつけたいので、concat
関数を使ってURLを作成する。
concat('https://twitter.com/', triggerOutputs()?['body/TweetedBy'])
ツイートのURL
ツイート ID
もID部分しか無いので、concat
関数を使ってURLを作成する。
concat('https://twitter.com/', triggerOutputs()?['body/TweetedBy'], '/status/', triggerOutputs()?['body/TweetId'])
投稿日時のタイムゾーンの変更
UTC+0
から UTC+9
( UTC
から Tokyo Standard Time
)
`に変更する必要がある。
convertTimeZone(triggerOutputs()?['body/CreatedAtIso'], 'UTC', 'Tokyo Standard Time', 'yyyy/MM/dd(ddd) HH:mm:ss')
2021/08/28(Sat) 02:19:47
-
式関数のリァレンス ガイド - Azure Logic Apps | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#convertTimeZone -
カスタム日時形式文字列 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings -
Time Zone IDs (Compact 2013) | Microsoft Docs
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/gg154758(v=winembedded.80)?redirectedfrom=MSDN
カルチャの指定の仕方がわからん。。。
複数のアカウントでの運用
切り替え
紐付いているアカウントの管理・確認
結果
メール
テストで検索条件を雑にしてたら、メールが大変なことに。。。。
ツイート
ツイートもされまくって、削除をするのが大変だった。。。
※ ツイートにはアカウントの @
がうまく乗せられないので試行錯誤中
実行履歴
細かい実行履歴が結構良い感じ。ツイートしすぎて、投稿の失敗も一応あった。。。
まとめ
ツイートの検索が1時間周期のため、思ったよりも差を埋めることが出来なかった。しかし、セール情報のツイートなど、緊急度がそこまで高く無い内容であれば、全然有用に思える。IFTTTよりも無料の幅が広く、柔軟性もありそうなので。 .NET Passport
Microsoftアカウント
を持っているのなら、結構活用してみても良さそうに思う。
なにより、日本で使えるしね!
しかし、こういうサービスでSpacesの開始の検出は、流石に限界あるのかなぁ。。。
謝辞
- Microsoft Powerautomate
https://flow.microsoft.com/