はじめに
今回はPower Automate for Desktop(PAD)で予約引用RTを自動設定する方法を紹介します。
PADやAffinityPhotoの基礎知識などがある事を前提に進めます。
前提知識はこちらをご覧ください。



ちなみに、↑このTwitter入力の続きという立ち位置です。
Twitter(X)の自動化の対する規約と考え方
Twitter (X)のヘルプセンター的には、この記事で紹介するとPADの操作はグレーゾーンです。
行ってはならないこと
引用:X ヘルプセンター
・Xのウェブサイトを操作するスクリプトを作成するなど、API以外の方法で自動化を行う。このような方法で自動化を行った場合、アカウントが一時的にロックされるか、永久凍結されることがあります。
なので、今回紹介する処理は、もしかしたらアカウントが永久凍結される可能性があります。

先ほどの文章、よく見ると「永久凍結されることがあります」で終わってます。
“~~ことがある” = これを、必ず凍結されるとは限らないと私は解釈しました。
そして、この記事が紹介するPAD処理ですが…
これは、私たちのキーやマウスの操作などを模倣してます。
なので、 API以外の方法という点ではアウトですが…
PADで文字入力して投稿内容という処理だと、コレを使った事を証明はほぼ不可能と思います。
なので、グレーゾーンではありますが…
VRChatのイベント告知を楽にするための自動化といった内容であればあれば…おそらく、お咎めなしとおもいます。
一応、この記事では「送信」までは自動化しない形で紹介します。
そして、自動化の作り方を紹介しましたが…
Xの運営がもし見てる可能性があるので、公的にはブログに設定方法は紹介はしたが…
私は使ってない。
そう「それでも僕はやってない」と言っておきます。
たぶん、WEBサイトに迷惑をかけるような処理ではないのでOKのハズですが…。
消された時は… ここがTwitter(いーろん)の辞め時と思って諦めます。
(たぶん、こんな重箱の隅をつつく案件より、もっと消すべきアカウントがあるはず…
インプレゾンビとか、えちえち釣りスパムお姉さんアカウントとかね…)
念のため、ご利用は自己責任でお願いします。
ツイートのURLを取得する
規約の関係で、ツイートボタンは自動で押したことにします。
そしたら、予約RTを設定したい投稿の日時をクリック。


頑張ってTabキー14回ぐらい押したり、
他にもバグっぽい挙動を探せば、
ツイート取得まで自動化できると思いますが…
チェックポイント的な意味で自動化しない方が安定するかも?
ここで、予約投稿したいツイートのURLを取得できます。

が、PADを動かすごとに1回1回この情報を編集して入れるのは面倒です。
なので、入力ダイアログを表示して入れる事にします。

PADを立ち上げ「入力ダイアログを表示」を追加。
そして変数を「TwitterURL」などに設定。

この状態で実行。

すると、下図の様な入力欄が出てきます。
こちらにURLをペースト。

これで、TwitterURLに指定したURLが入ります。

以上が、ツイートのURLを取得する工程です。
指定したURLのツイートを起動する
「新しい Chrome を起動する」などを追加。(EdgeやFireFoxでも可)
初期URLに先ほど設定したURLの変数を打ち込み。
そして、起動したブラウザの変数を設定。

この状態で実行。

URLを打ち込み。

これで、URL入力したTwitterを開けます。

以上が、指定したURLのツイートを起動する処理です。
引用+予約リツイートを設定する
そしたら、読み込んたツイートを引用+予約設定していきます。
「引用」を選択する
引用はT → 下キー → Enterキーで設定できます。
そして、この「リポスト/引用」の表示アニメーションを少し待つ必要があるので注意。

そしたら、下記のように設定。
・キーの送信で「t{Down}{Return}」を設定
・キーの送信先をウインドウのインスタンス/バンドルに設定
・ウインドウインスタンスを「ブラウザの変数」に設定
・キー入力の間隔の遅延を「50」などに設定

これで、引用を選択することができます。
「ひらがな」入力だと上手く文字が入らないので注意
文字は「ひらがな」入力だと正しく入力されません。

こちらのように、崩れます。

なので、下図のような「半角変換」する処理を作ります。

この処理を作る上で、厄介なポイントが…
1度でも入力先を開き「ひらがな」の状態にしたなら、別のウインドウで「半角」にしても、文字入力の際に「ひらがな」に変換されて文字が崩れる事です。

なので、 この「ひらがな」を半角に変換する処理を入れる必要があります。

こちらは「ウインドウの UI 要素をクリック」で行えます。
こちらをダブルクリックで追加。

クリックの種類を「右クリック」に設定。

そして、UI要素: → UI要素の追加 → 変換ボタンを「Ctrl+クリック」で取得。
「保存」します。

これで、半角変換の表示が出るようになります。
次はこちらを左クリックで選択するようにします。

もう1つ「ウインドウの UI 要素をクリック」を追加。
こちらは「左クリック」で登録。

UI要素を取得中に、画面を出すために右クリック。
すると3つの選択肢が出ます。
普通の右クリック操作は「右クリックを送信」で行えます。
こちらを選択。

そして「半角ボタン」をCtrl+クリックで取得。
表示エラーで赤い枠が画面の裏に出てますが… こちらで大丈夫です。

これを処理の前に入れると、半角表示になります。
以上で1つのディスプレイの場合は対処法が完成です。
2つ以上のディスプレイを使ってる場合
2つ以上ディスプレイを使ってる方は「A/あ」の表示が無い画面が出てきます。
そして、どの画面で「UI要素をクリック」の処理が入るかは…
処理が実行された際に「マウスがあった場所の画面」で決まるようです。

なので「A/あ」が無い画面で実行をクリックしたりすると、何もない所で右クリックが発生。
そして「A/あ」が無いので正しい表示にならずエラーが出て崩れます。

これの一番良いと思う対処法は「入力ダイアログを表示」させる事です。

今後のバグを減らすために、半角文字の入力をうながす一文を設定。
さらに「OK」を “クリック”してもらう一文も追加。

これで、エラーの原因になりやすい「半角表示」を消せます。


PAD側で半角で入力しても、Twitter側には反映されないので…
無意味と言えば無意味な処理ですが…
バグを引き起こす確率を減らすために入れました。
そして、この「入力ウインドウ」はメイン画面(「A/あ」があるウインドウ)に出るようです。
なので、これの「OK」をクリックすれば、メイン画面にマウスを移動させるという条件をクリアできます。

あとは「処理中はマウスを動かさない」という注意書きもあると親切。
これで、高確率で止まる事無く動きます。

PADは最後の方になると、人間の無意識で行う行動との闘いになります。
人間の行動心理を想定しプログラムに組み込む必用がでてきます。
あと複数のWEBブラウザに入力を行う場合は…
この処理をサブフローとして登録しておくと後々便利です。

上手くいかなかったときの修正や、複数個所への挿入が楽になります。

サブフローの使い方はこちらで解説。

そして、下図の様な処理ができます。

たまに画面が最大化してるとバグるので注意
たまに画面が最大化してると、右下のこのボタンが出なくなります。

なので… 「エラー発生時」の挙動を決めておくと安全です。

フローを実行し続けるようにしてください。

このエラーが発生した場合、この「2」の所で処理が止まります。
なので、処理を止めずに進める事ができます。


「ひらがな」や「全角」入力されれば止まるのですが…
ダメだった時、運が良ければそのまま上手く行くようにするための処理程度のモノと思ってください。
以上が、「ひらがな」入力だと文字が正しく入らないについての解説です。
文字を入力し、今日の日付を選択する
文字は「引用」を選択後、1秒ぐらい待ってから普通のキー入力で入れれます。
そして、予約投稿はTabキー6回 → Enterキーで移動できます。

そして、半角変換の処理は「UI要素をクリック」なので、少し時間がかかります。
あえて、この遅さを使ってツイート画面の表示を待つ処理とします。
この遅い半角変換の処理を入れた後でテキスト+Tabキー6回+Enterキーを入力。

すると、下図の様な予約設定画面が出てきます。
こちらも表示で1秒ぐらい待つ必要があります。

そして、この予約設定は自動で未来の+5日後ぐらいの日付が表示されます。

このような日付のズレが厄介なので修正する処理を入れます。
今日の日付を設定する
日付取得のサブフローを作り、下記のような処理を追加。
・現在の日時取得 → 今日の日付を取得
・現在の日付のdatatime型情報をMM形式で変換 → 01~12のような形で"月"が出る
・現在の日付のdatatime型情報をdd形式で変換 → 01~31のような形で"日"が出る

日付関係の詳細はこちらでまとめてます。
↓より詳しく知りたい方はこちらをご覧ください。

そしたら、予約設定の”月”はTabキー3回で移動できます。
横の「日」は”月”の数値入力後、 Tabキー1回で移動可能。

なので、このようなキー入力を追加。

これで、今日の月と日が入ります。


厄介なことが起こりそうなので…
23時59分59秒のようなタイミングでPADを動かさないでください。
そして、年表示が… なんと数値入力できません。

なので、Tabキーで推移し下キー連打で下限に当てて今の”年”を設定する処理を入れます。

なので、Tabキーで推移し下キー連打で下限に当てて今の”年”を設定する処理を入れます。

これで、今日の日付を設定する処理が完了です。
カレンダーで投稿する日付を指定する
今日の日付を設定後、カレンダーにはTabキー1回+Enterキーで推移できます。
こちらの処理を追加。

現状をまとめると、下図のような形になってます。

そして、このカレンダーは右キーで移動。
Enterキーで日付を確定できます。

なので、カレンダーを表示しまずは今日の日付に移動。(月/日/年で、既に設定済み)
そして「今日の日付」と「投稿予定日」の差だけ右キーを入力します。
その後、Etnerキーで投稿日を設定できます。

ちなみに、カレンダー+右キーを使った理由は、今日が「12月末」で、予定日は「来年の1月」の場合の年またぎ対策です。


カレンダーを使う方式は若干処理が”遅い”です。
差が15日ぐらいなら実用に耐えれると思いますが…
1か月以上あるなら、他の方法をおすすめします。
(ごめんなさい、ちょっと今は思いつきません)
そしたら、今日の日付と予定日を取得し、差を出す処理を入れます。
下図の様な処理を「日付取得」のサブフローに追加。

日付選択ダイアログを表示の規定値に「加算する日時」で設定した変数を入力。

すると、予測入力で今日+6日の表示が入ります。
これがあると、かなり操作が楽になるので入れるのをおすすめ。

そしたら、Loopを追加。
開始値:と増分:を1に設定
終了を「今日と予定日の差」の変数に設定。(日付の減算で取得)

そして、カレンダーの表示アニメーション1秒待ってから、Loopの中に右キーを入力する処理を追加。

これで、カレンダーで投稿する日付を指定する処理が完了です。
時刻を設定し予約投稿する
時間はカレンダー表示後、Enter → Tabキー4回で推移できます。
あとは数値入力可能。

これをキー入力するだけの簡単なお仕事です。

これで、時と分を設定できます。
あとは、Tabキー3回 → Enterキーで「確認する」を押せます。

確認するを押したら、画面切り替わりで1秒待ちます。
そして、Ctrl+Rキーで「予約設定」を押せます。

この処理を追加。

これで、予約投稿が作れます。

以上が時刻を設定し予約投稿する処理です。
予約投稿の確認と削除
予約投稿はツイートボタン → 「下書き」を選択。

「予約済み」を選択
ここで確認できます。
削除する場合は、編集を選択。

消したい投稿にチェックを入れて右下の削除。
これで、予約投稿を消せます。

以上が、予約投稿の確認と削除方法です。
まとめ
今回は、今回はPower Automate for Desktop(PAD)でTwitter(X)で予約引用投稿を自動で設定する方法を紹介しました。
・まず利用規約的にはグレーなので注意
・URLは入力ダイアログなどを使って取得
・引用投稿はツイート表示後T → 下 → Enterキーで設定可能
・文字を入力後、Tabキー6回で予約設定に移動可能
・予約設定は5日後ぐらいの日付が表示されるので注意
・まず、現在の日時を取得で月と日取得し、この2つを入力して現在の日時に合わせる
・そこから、現在の日時と投稿予定日の差だけカレンダーで右キーをいれて日付を指定
・残りはTabキーで推移+文字を入れるだけ
また、他にもPAD関連の情報を発信してます。



ぜひ、こちらもご覧ください。
コメント