0
1

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.

Twitterの投稿をFacebookとLinkedinにも投稿されるようにしてみた

Posted at

はじめに

本記事は各SNSに同じような投稿をしたいのに、一々各サイトをめぐってコピペするのがアホくさかったので、自動化できないかと試みた結果をまとめたものです
よりベストな方法があろうことは想像に難くないですが、見つけられなかったので備忘録的に残しておきます
また、新規開発要素はありませんので、外部リンクばかりです
Power Automate Desktopを実行するためのPCが別途必要なので、汎用性および実用性は薄いです
有料版であればO365のPower Automateと繋げてできそうなことを無理やりやっているのでおすすめできません

まとめ

SyncSNS.png

  1. Twitterの投稿をzapierで拾ってメールへ転送する
  2. 特定の未読メールを周期的にPower Automate Desktopでポーリング取得する
  3. メールの本文をPower Automate Desktopでクリップボードへ保存
  4. Facebook/LinkedinをChromeで開く
  5. Power Automate DesktopのWebUI操作を実行し、投稿する

1. Twitterの投稿をzapierで拾ってメールへ転送する

Twitterの自分の投稿をzapierで取得する

こちらを参考にしました
TwitterからSlackに投稿するには?Zapierで簡単!

Twitterで取得した結果をGmailへ送信する

こちらを参考にしました
Slackとzapierを使ってメール送信を自動化してみた

2. 特定の未読メールを周期的にPower Automate Desktopでポーリング取得する

特定の未読メールを取得する

こちらを参考にしました
Power Automate Desktop : How to work with "Retrieve Emails" Action (Email Automation)

ポーリングする

こちらを参考にしました
Power Automate Desktop:無料バージョンだけで定期的にフローを自動実行する方法(アイデア)

3. メールの本文をPower Automate Desktopでクリップボードへ保存

image.png

Clipboard.SetText Text: PostText
MouseAndKeyboard.SendKeys TextToSend: $'''{Control}({V})''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: True

キー入力によるショートカットキー利用はこちらを参考にしました
ドキュメント Power Platform Power Automate Power Automate Desktop デスクトップ アクションのリファレンス マウスとキーボード

PostTextはMailObject.Bodytextが入ります

4. Facebook/LinkedinをChromeで開く

例: Linkedinの場合

System.RunApplication ApplicationPath: $'''\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"''' CommandLineArguments: $'''https://www.linkedin.com/feed/''' WindowStyle: System.ProcessWindowStyle.Normal ProcessId=> AppProcessId
WebAutomation.AttachToChromeByUrl TabUrl: $'''https://www.linkedin.com/feed/''' BrowserInstance=> Browser
WAIT (UIAutomation.Windows.ToOpenByTitleClass Title: $'''フィード | LinkedIn - Google Chrome''' Class: $'''Chrome_WidgetWin_1''' FocusWindow: True) 

chrome.exeのパスは環境変数なりに入れるとか変数で渡せるようにするとか工夫したほうが良さそうだけど、個人利用だしいっかの精神
2行目のWebAutomation.AttachToChromeByUrlでWeb操作可能なオブジェクトを取得するため必須
3行目はWindowが立ち上がってないと操作に移れないための待機。オプションでフォーカスを合わせることもできるので、設定しておく
※バックグラウンド実行できるのであればしたいが、試行錯誤コスト高そうだったので今回は保留

環境によって、各行実行時にまだページが開いてないとか、色々あると思うので、waitをうまく挟んだほうが良さげ

5. Power Automate DesktopのWebUI操作を実行し、投稿する

Webレコーダーを使用してやりたい操作を登録した
レコーダーを使わずにUIの要素をポチポチ拾ってあげようとすると、一時トークンも含む限定的なオブジェクトと認識されてしまい再利用できなかった
セレクターの編集から頑張ればできるっぽいけど、ハマりそうだったのでレコーダーで進めた

Webレコーダーの利用方法についてはこちらを参考にしました
【初心者向け】Microsoft RPA Power Automate Desktop はじめてのWebレコーダー

成果物イメージ

image.png

できなかったこと、わからなかったこと、やりたいこと

次の機会に向けた自分へのまとめ。コメントもらえるとありがたいところ。

できなかったこと

  • クラス、関数分けのようにフローを分けて呼び出す
  • Chromeインスタンスの再利用
  • 投稿入力フォームへの直接入力(クリップボードを使わない)

わからなかったこと

  • UI要素のセレクターの書き方、作り方
  • バックグラウンド実行

やりたいこと

  • Pythonなどを用いてSaaS APIを呼び出す処理との連動
  • 仕事で、UIを含むアプリケーションのテスト自動化
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?