見出し画像

コピペで作る Twitter 自動定期リツイートツール[Google Spreadsheet + Google Apps Script(GAS)]

これはなに?

特定のツイートを定期的に自動RTするツール (※1)
Google Spread Sheet と Google Apps Script(GAS)で作成して、無料で運用可能 (※2)
「毎週月曜の12:00」「毎月10日の20:30」「2日に1回、23:55」などのスケジュール設定が可能
告知/宣伝 などのRTを自動化したい方向け

(※1) 自分・他人、どちらのツイートでも設定できます
(※2) Twtter, Google の仕様や規約変更などで影響を受ける可能性があります


どうして作ったの?

・自分のツイートを定期的にRTするツールやサービスが無かった(見つからなかった)ため
・ちなみに、新規ツイートを日時指定で投稿するツールやサービスはある


更新履歴

2019/02/06
・初版

2019/02/07
・createSheetForRetweet のバグを修正(RT 対象が1件も無い場合にエラー)

2019/05/01
・Twitter App の Callback URLs の設定手順誤りを修正
・コードに SCREEN_NAME 設定処理の漏れがあったのを修正

2019/10/24
・Twitter の仕様変更で「全ツイート履歴」がダウンロードできなくなっていたので、代替案について記載

2020/02/24
・有料コード直前に注意点追加


目次

・これはなに?
・どうして作ったの?
・更新履歴
・設定画面例
・動作概要
・必要なもの
・買うと嬉しい人/買わない方が良い人
・参考サイト
・免責事項/禁止事項/注意事項
・事前準備(Google, Twitter)
====== 有料パート ======
・設定手順、GASコード
・スケジュール設定について


設定画面例

細かい設定内容は別途説明しますが、こんな感じでRTスケジュールを設定します。(cron風です)

画像1

・A〜E列:RTスケジュール(空白はRT対象外)
・F列:ツイートID (URLに入ってるやつ)
・G列:ツイート日時
・H列:ツイート内容

※F〜H列は自動で最新ツイートを取得するように設定可能


動作概要

ここは GAS とか分かる人向けなので、意味わからんという方はスキップしてください。

~~~ 事前準備 ~~~
・Twitter の過去ツイ一覧を https://twitter.com/settings/account から取得
 →2019/10/24追記: 過去ツイ一覧(全ツイート履歴)が上記URLからDLできなくなったようです。https://twitter.com/settings/your_twitter_data からDLできる tweet.js を解析して tweets.csv(簡易版) を出力できるページを作りました。https://17number.github.io/tweet-js-loader/ を使用ください。
・過去ツイ一覧を(必要に応じて編集して) Spread Sheet に取り込み (※1)
・Spread Sheet のフォーマットをツール用に改造
・Google Apps Script の設定(コードのコピペ、トリガ設定)
・RT スケジュールの設定 (※1)

~~~ GAS 動作 ~~~
・1日1回トリガ:翌日の RT 対象を抽出
・毎分トリガ:↑で抽出した対象をチェック、RTスケジュールを確認。RTスケジュールと合致していたら、「該当ツイート取得→(必要に応じてRT解除)→RT実行」を Twitter API で実行
・任意トリガ:未記録の最新ツイートを Spread Sheet に追記 (※2)

(※1) 「GAS で Spread Sheet の走査が走る」し「RT スケジュールの設定」はSpread Sheet を眺めながらの設定になるので、「これはRT不要」ってのを事前に削除しておくと良いかもしれません。
(※2) Spread Sheet に手動でツイートを追記していくのダルいので、自動で自分(設定ユーザ)の最新ツイートを記録するようにしています。どうでも良いツイートもたくさんする方は逆にゴチャゴチャするかもなので、手動管理の方が良いかもしれません


必要なもの

レンタルサーバ(VPS)を借りたり、自分でクラウドにサーバを構築したりする必要はありません。

・PC (※1)
・Googleアカウント
・Twitterアカウント (※2)

※1: ネットカフェなどのPCでも良いです(が、セキュリティ面を考えると自分のPCが良いです)。スマホやタブレットでも設定できますが、PCよりちょっと面倒くさいと思います
※2: Twitterの自動投稿(API 利用)には、メールアドレス電話番号認証(確認)が必須です。手順は本note(無料部分)に載せています


買うと嬉しい人/買わない方が良い人

買うと嬉しい人

・ブログやnoteのツイートを週イチや月イチでRTして宣伝したい!けど手作業は面倒!という方
・何らかの告知をイベント前日まで毎日RTしたい!けど手作業は面倒!という方
・Google Apps Script のコードを見たい!という方


買わない方が良い人

・別に手作業でのRTも面倒ではない、という方
・宣伝や告知など特にない、という方
・Google Apps Script のコードの詳しい説明が見たい、という方 (※1)

(※1) 後述の参考サイトの内容を組合せて改変すれば作れるため、細かい説明は記載していません


その他

・過度な宣伝は逆効果なので、RT間隔はほどほどに設定した方が良いです


参考サイト

開発者さんは以下を見れば作れると思います。


免責事項、および禁止事項

購入した時点で以下に同意したものとみなします。

・個別の導入トラブル対応や、詳細なコード説明はしません。(ただし、明らかなこちらの不備などはのぞく)
・各画面のスクショなどを載せて手順を説明しておりますが、スクショ画像は 2019/01〜2019/02 時点のものになります。今後、各ツールの UI(見た目) が変わる可能性もありますが、UI が変わる度に note を更新することはできません。場合によっては、各自で検索していただく必要があることをご了承ください。
・Google、および Twitter の仕様や規約変更により上手く動作しなくなる可能性があります。その際、修正コードの提供は確約できません(やるかもしれませんし、やらないかもしれません。基本的にはやる方向ではいます)。
・本noteの有料部分を無断で誰でもアクセスできるブログなどに公開すること、また改変したものを有料noteなどの商材として販売することを禁じます。


注意事項

とても細かい部分なので「普段からGAS使ってる」とか「過去ツイが10万件ある」とかいう方のみお読みください。

・GAS の動作時間やトリガ数には制限があります。そのため、他にも GAS で色々と実行している方や、設定RT数が極端に多い方は場合によっては制限にひっかかるかもしれません。「別の Google アカウントを用意する」「Spread Sheet から不要なツイートを削除する」などの対処が必要な可能性があります
・Spread Sheet の最大セル数は200万セルとなっているため、ツイート数が多い方は事前に「不要なツイートを削除する」ことをおすすめします。本ツールでは1行8セルのため、(最大セル数的には)約25万ツイートまで対応可能です。

(※) 25万ツイート記録時に本ツールが正しく稼働するかは未確認です。↓の概算が正しいとすれば、全件走査で約50秒(= 250,000/5/1,000)程度の実行時間となります。1トリガあたりの稼働可能時間は6分のため、特に問題なく動くと思います。


事前準備(Google, Twitter)

Google アカウント取得

以下あたりを参考に作成ください。すでにアカウントをお持ちの方は、次手順へ。


Twitter 過去ツイ取得

2019/10/24 更新

https://twitter.com/settings/account から「全ツイート履歴」が取れなくなったようなので、代替案を記載しておきます。以下からデータをダウンロードしててください。

https://twitter.com/settings/your_twitter_data

ダウンロードしたデータに入っている tweet.js を以下サイトに読み込ませて、「tweets.csv を出力」をクリックすると簡易版が DL できます。


Twitter Developers 申請

https://developer.twitter.com/en/apps で API 利用の申請をします。
詳しくは以下を参考にしてください。すでに申請済の方は、次手順へ。

なお、申請するには、メールアドレス、電話番号 両方の登録が必要です。


Twitter App 作成

Developers の申請が通ったら、次はアプリ作成の申請をします。

以下は参考情報(私が新規アプリ作成申請した時のスクショ)です。

画像3

画像4

App name(※1)
RetweetmanForAAAAisBraver

Application description
- Record my tweets(id, timestamp, content) to google spread sheet.
- Retweet my tweets following a schedule in google spread sheet.

Tell us how this app will be used
- Get my tweets and record my tweets(id, timestamp, content) to google spread sheet.
- Retweet my tweets following a schedule in google spread sheet.

(※1) 他の人が使っているものは使えないため、自分のIDを入れると良いです


Twitter API Key/Secret 取得

アプリの申請が通ったら https://developer.twitter.com/en/apps/ に移動します。申請したアプリが表示されているので、Detailsをクリック

画像5


Keys and tokens に移動、Access token & access token secret を生成。その後、API key, API secret key をコピーします。
※あとでこのタブ使うので閉じずに残しておいてください。

画像6


念の為 Permissions で、Access permission が Read and write になっているか確認。違ったら Edit から変更してください。

画像7


自動RTツールの設定

Google Spread Sheet 作成

↓を開いて新規スプレッドシートを作成。

画像8


事前にDLしていた過去ツイをインポートします。ツイート数が多い方や、不要なツイートは除外しておきたい方は、ローカルで編集することをおすすめします。なお、必要な情報は tweet_id, timestamp, text のみです。

画像9

画像10

画像11


インポートしたら不要な列を削除します。tweet_id, timestamp, text 以外は不要です。B, C, E, G〜J列を選択(クリック)して、編集→選択した列を削除 で一気に削除できます。

画像12

画像13


次にスケジュール設定用の列を追加します。

画像14

画像15


スクロールしても見やすいように、ヘッダ行を固定します。

画像16


データが新→旧順になっているため、フィルタを追加して旧→新順に並べ替えます。

画像17

画像18


Google Apps Script(GAS) 作成

ツール → スクリプトエディタ で新しいタブが開きます。

画像19


プロジェクト名はお好みで設定してください。

画像20

画像21


必要なライブラリを読み込みます。リソース → ライブラリ を選択。

画像22


新たに表示される画面で、以下を入力して追加。

1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s

画像23


バージョン12を指定して保存。

画像24


ここから有料パートになります。無料パートを再度ご確認の上で、必要だと思う方のみご購入ください。


2020/02/24 追記

公開から時間が経っていることもあり、環境設定などによっては上手く動かないケースがあるようです。まともにチェックする時間が取れないので、上手く動かないケースは、免責事項に記載している通り「各自で検索」していただく必要があります。
その点をご理解の上で、ご購入ください。

■現状分かっているもの
・twitterAutorizeUrl 実行時に「このアプリでは「Googleでログイン」機能が一時的に無効」と表示されることがある
 →解析したが原因不明(自分のアカウントでは発生せず)。Google アカウントの設定(電話番号の認証や、2FA の設定など)に原因があるかも?
  https://reviewdays.com/archives/62065
  https://twitter.com/neruplan/status/1217128866910572544
  https://qiita.com/vvvvkoyo/items/8b07e88354c6042895eb

・「property store is required 行xx ファイル utilities」と表示されることがある
 →「ChromeV8搭載のApps Scriptランタイム」が有効になっているとダメっぽい?
  https://teratail.com/questions/240990
  https://qiita.com/tanabee/items/113bfe2e3497b4462b68


ここから先は

19,512字 / 36画像

¥ 1,980

サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM