投票機能などを使っているときに自分のツイートを定期RTしたい場合があると思います。
「特定のツイートを定期的にRTする」というbotに関して、自動作成ツールや知見があまりなかったので共有します。
また、TwitterBot作成方法2018年2月版としてもお使いください。
やりたいこと
GoogleAppsScript(GAS)を使って、Twitterで定期的にRTまたは引用RTを行う。
手順
1. プロジェクトを作成する
Googleドライブを開き、GoogleAppsScriptでプロジェクトを適当に作成してください。
2. Twitterでアプリケーション登録を行う
Twitter Application Managementを開き、[Create New App]からアプリケーションを作成してください。
Name, Description, URLは適当で大丈夫です。CallbackURLを以下のように設定してください。
https://script.google.com/macros/d/[GASのプロジェクトキー]/usercallback
GASのプロジェクトキーは、画面上部のメニューから[ファイル]→[プロジェクトのプロパティ]→[情報]
とたどると取得できます(「サポート終了」と書かれていますが、現状は使って問題ありません)。
ちなみに、アプリケーション登録には電話番号必須なんですが、登録の際ハマってしまった人は以下を参照。
Google Apps Script (GAS) でTwitterへ投稿するだけの機能を実装してみる - Qiita
3. ライブラリを導入する
GASの上部メニューから[リソース]→[ライブラリ]
と辿り、「ライブラリを追加」に以下を入力して追加してください。
Mb2Vpd5nfD3Pz-_a-39Q4VfxhMjh3Sh48
プルダウンからバージョンの指定ができますが、最新版では次に紹介するヘルパーが上手く動作しないため、バージョンは7を選んでおいてください1。
4. ヘルパーを導入する
GASでtwitter.gs
などの名前でファイルを作成し、以下のヘルパーを丸ごとコピペしてください。
https://gist.github.com/kijtra/f4cdd8775277372d42f7
5. 認証する
先ほど作成したtwitter.gs
の18-21行目を訂正します。
projectKey: "...", // GASのプロジェクトキー
consumerKey: "...", // Twitterでアプリケーション登録したときに発行されるConsumer Key
consumerSecret: "...", // 同じく発行されるConsumer Secret
ここを訂正した後、GASからtwitterAuthorizeUrl
を実行して認証を行います。
twitter.gs
を開き、画面上部の「関数を選択」のプルダウンから選んで実行してください。
エラーなく実行が終わったら、**[Ctrl]+[Enter]**でログを開いてください。
そこに記載されているURLにアクセスすれば、認証を行うことができます。
6. ツイートするためのコードを書く
それぞれ、function tweet()
などの名前で関数にしておきます。
引用RT
ありがたいことに、先ほどコピペしたヘルパーにツイート用のメソッドが用意されています。
function tweet(){
Twitter.tweet({ status: "投票お願いします", attachment_url: "引用したいツイートのURL"})
}
が、このままやると全く同じ内容のツイートは2度できない制限に引っかかってしまいます。
回避策は「文字列の末尾に日付などの値を足す」「前回のツイートをいちいち消す」などが考えられますが、どれも一長一短です。
自分の場合は短期間に数回ツイートするだけだったので、「ツイートの文中にあるスペースをランダムかつ不自然でない範囲で増やす」という一時しのぎ的な回避策を取りました。
(どなたか良いアイデアのあるかた、お願いします。。。)
RT
一度手動でRTしておく必要がありますが、これは何度でも実行できます。
function tweet(){
Twitter.oauth.service().fetch("https://api.twitter.com/1.1/statuses/unretweet/[ツイートID].json", { method: "POST" });
Twitter.oauth.service().fetch("https://api.twitter.com/1.1/statuses/retweet/[ツイートID].json", { method: "POST" });
}
ヘルパーのTwitter.api(path, data)
から任意のAPIを叩けるようにはしてあるのですが、最近RTのAPIが変わったのか上手く動きませんでした。
7. 定時実行を設定する
GASの機能で決まった関数を定時実行することができます。
画面左上の時計マークをクリックし、お好みの間隔で設定してください。
毎分とかにするときっと嫌われますのでフォロワーさんのTLに迷惑をかけないように。
参考文献
以下、参考にさせていただきました。
- API reference index — Twitter Developers
- Google Apps ScriptでOAuthConfigのサポートが終了してTwitter botが危険そうだったので変更 - きじとら
- Google Apps Script (GAS) でTwitterへ投稿するだけの機能を実装してみる - Qiita
-
本当は最新版に合わせて訂正すべきとこだったんですが、力尽きましたすみません ↩