1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PowerAutomate】とあるTwitterアカウントのSpacesの開始をGmailで通知するクラウド フロー

Last updated at Posted at 2021-08-27

概要

先日 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 の 有償/無償 とで ``クラウド フロー``` にどう差が出るのかわからない。

フローの作成

⓪ サマリー

image.png

① トリガー

  • 条件
    • -from@myaccount : 自分のアカウントを - で指定して、自分を除外する。
    • lang:ja : 日本語に絞る
    • filter:spaces : スペースの投稿に絞る

image.png

検索テキスト
-from:@myaccount lang:ja filter:spaces

検索条件の応用で、色々と活用ができる。

② アクション

① Gmailを送信する。

自分自身のアドレスをベタに指定するので良いと思うけど。+ でGmailのサブ アドレス機能を使えば、フィルタリングは楽かと思う。

image.png

件名 (サンプル)
【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>&nbsp;</p>
<p>@{concat('https://twitter.com/', triggerOutputs()?['body/TweetedBy'], '/status/', triggerOutputs()?['body/TweetId'])}</p>
<p>&nbsp;</p>
<p>powerd by microsoft powerautomate.</p>

② ツイートする。

image.png

ツイートの投稿 (サンプル)
started spaces by @{triggerOutputs()?['body/UserDetails/FullName']} ( @{concat('@', triggerOutputs()?['body/TweetedBy'])} ) .
@{triggerOutputs()?['body/CreatedAtIso']}
@{triggerOutputs()?['body/TweetText']}

補足

属性と関数

Twitterの属性

多いんだけど分かりづらい。。。
image.png

一応以下の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

カルチャの指定の仕方がわからん。。。

複数のアカウントでの運用

切り替え

image.png

紐付いているアカウントの管理・確認

image.png

結果

メール

テストで検索条件を雑にしてたら、メールが大変なことに。。。。
image.png

ツイート

ツイートもされまくって、削除をするのが大変だった。。。
image.png
※ ツイートにはアカウントの @ がうまく乗せられないので試行錯誤中

実行履歴

細かい実行履歴が結構良い感じ。ツイートしすぎて、投稿の失敗も一応あった。。。
image.png

まとめ

ツイートの検索が1時間周期のため、思ったよりも差を埋めることが出来なかった。しかし、セール情報のツイートなど、緊急度がそこまで高く無い内容であれば、全然有用に思える。IFTTTよりも無料の幅が広く、柔軟性もありそうなので。 .NET Passport Microsoftアカウント を持っているのなら、結構活用してみても良さそうに思う。

なにより、日本で使えるしね!

しかし、こういうサービスでSpacesの開始の検出は、流石に限界あるのかなぁ。。。

謝辞

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?