【初心者でも簡単】フォロー管理を自動化する自作TwitterBotの作り方

GAS/TwitterBot
two 3d humans give their hand for handshake
この記事は約5分で読めます。

フォローしたりリフォローしたり、フォローされてない人のフォローを解除したりするにはどのようにすればよいのでしょうか?
【鬼ったー】というサイトを利用してみようとしてみたのですがうまくいかず…

今回はフォロー状態を管理するTwitterBotの解説していきます。

ちなみに私はフォロー状態の管理は普段 SocialDog を利用しています。

フォロー状況だけでなく、◯日以上ツイートしていない人をリストアップしてくれたり、ワンタッチでフォロー/アンフォロー出来るのでおすすめです👀

ただ、今回は勉強を兼ねて作っていくんですけどね!

ちなみに『鬼ったー』のようなサービスは規約違反です。詳しくはこちらをご確認ください。

フォローとフォロー解除の自動化: Twitterアカウントを大量または無差別にフォローしたり、フォロー解除したりしないでください。過剰なフォローはTwitterルールで禁止されています。詳しいルールについては、「フォローのルールと成功事例」をご覧ください。また、利用者がフォロワーを増やせると謳うアプリケーションも、Twitterルールで禁止されています。

https://help.twitter.com/ja/rules-and-policies/twitter-automation

規約違反のものの作り方を教えるわけにはいかないので、今回は要望にはお応えしますが、無作為にフォローを増やすツールではなく、自分のフォローを整理するBotを作りたいと思います。

今回の記事を利用すればフォローされたら自動的にフォローを返すTwitterBotを作ることが出来ます。

ちなみに、このブログで紹介している自作Botはユーザーが増えてアクセスが出来ないということはほぼないです。理由は簡単で各自でGASとTwitterアプリを用意してもらって処理を実行しているので膨大なアカウントが1つのサービスに集中することがないためです。

便利なツールを頑張って探す時代ではなく、簡単に作れる時代になりつつあります。

この記事を読んで少しでも挑戦してくれる人が増えてほしいです\(^o^)/

今回作っていくもの

改めてになりますが、自分のフォロー/フォロワーを一覧取得して、相互でない人を整理する機能を作っていきます。

ざっくりと以下の機能を作っていきます。

  • ① 自分のアカウント情報を取得して相互じゃない人をスプレッドシートに記録する機能
  • ② スプレッドシートにまとめたアカウントをフォローする機能
  • ③ スプレッドシートにまとめたアカウントをフォロー解除する機能

今回もライブラリに機能追加し、実装は簡単に出来るようにしておくので安心してください。

作り方

細かい導入方法は 【爆速】自作のTwitterBotを簡単に作るライブラリを作った話【初心者向け】 にて紹介しているのでざっくり紹介していきます。

Twitterアプリを用意

https://developer.twitter.com/ja で自分用のTwitterアプリを用意します。

スプレッドシート&GASを用意して、ライブラリを登録

スプレッドシートを作って以下のライブラリを登録します。

1fHCjI78BV3o7nGx2l0lJ7WXM49VFbobGDNdFGqAoVFZyRJ2kepQYzVLd

スプレッドシートは TwitterBotシート_サンプル を用意しているのでこちらをコピペしてもらえればと思います。

コードを書く

認証を行う

getCallbackUrl() で取得したCallbackURLを自分のTwitterアプリに登録して、authorizeで認証を行います。

プログラム実行

今回のサンプルコードで用意したコードは4つあります。

  • updateFollowOnlyUser
    • フォローのみ(片思い)のユーザーをリストアップ
  • updateFollowedOnlyUser
    • フォロワーのみ(ファン)のユーザーをリストアップ
  • followFromSheet
    • リストアップされたシートに記載されたユーザーをフォローする
  • unFollowFromSheet
    • リストアップされたシートに記載されたユーザーをアンフォローする

コメントに機能は書いていますが、フォロー状態を取得してスプレッドシートに書き込む関数とスプレッドシートの状態を読み込んでフォロー/アンフォローを行う機能になります。

コピペだけでフォロワーを整理する機能は使えますが、フォロワー一覧取得メソッドなど他の用途に使える機能を用意しているの是非ご活用ください。

また、規約違反ではあるのですが、ツイート検索と連携すれば鬼ったーのような機能も作れます。
というかGASの定期実行を利用すれば例えば『フォローを返してくれなかった人を定期的にフォロー解除する』なんかはすぐに出来ますね…

※記事のリクエストは基本受け付けていますが規約違反に触れるものを作るとアドセンス広告に響くため記事化する予定はありません。ご了承ください(´・ω・`)

内部処理について

Google ドライブ - 1 か所であらゆるファイルを保管
Google ドライブなら、無料でファイルをバックアップして携帯電話、タブレット、パソコンから手軽にアクセスできます。まずは、15 GB の無料の Google ストレージをご利用ください。

これまでのコードは上記のリンクから見ることが出来ます。

気になる方はぜひご覧ください。

単純なフォロワー整理なら既にあるサービスを使うがおすすめ

正直今回フォロー/アンフォロー周りの学習と自作ライブラリの拡張のために、リクエストにお応えしましたが、普通に外部サービスを利用したほうが効率が良いと思います。

SocialDogえごったー などは最初から機能は整っているので一度利用してみて、不足している機能があれば自作をご検討するのが良いと思います(相談乗ります👌)

ここまで読んで頂きありがとうございました!

コメント

  1. act2-1 より:

    突然すみません
    updateFollowOnlyUserを実行すると
    Exception: Request failed for https://api.twitter.com returned code 401. Truncated server response: {“errors”:[{“code”:89,”message”:”Invalid or expired token.”}]} (use muteHttpExceptions option to examine full response)
    と 表示され実行できません。どうすればいいのでしょうか?

    • 𝔹𝕖𝕝𝕥𝕫 より:

      エラーの内容ですが、Twitterアプリで発行したConsumerKeyが使えなくなったことを示しています。

      TwitterAPIのセキュリティが強化されて、ConsumerKeysは一度しか表示されなくなりました。
      同じTwitterアプリで何度かTwitterBot作ったりした時に、『Regenerate』を押していたりしませんか?
      『Regenerate』を押すと、これまでのトークンは使えなくなった上で新しいトークンが発行されます。

      対応ですが、再度新しいトークンを作って、そのTwitterアプリを使っている全てのトークンの場所に差し替えてもらうと直るかと思います!
      (もし既に使用出来ているトークンがあればそれを使ってもOKです)

  2. act2-1 より:

    ん~、1度 発行し直して差し替えましたが、(同じトークンで)
    “【爆速】自作のTwitterBotを簡単に作るライブラリを作った話【初心者向け】”
    の方は動くんですよね…

    • 𝔹𝕖𝕝𝕥𝕫 より:

      あ、認証情報が残っている影響かもしれないです。
      一度resetを実行して、authorizeしてもらえますか?

  3. act2-1 より:

    2回の処理に成功の後、
    Exception: Request failed for https://api.twitter.com returned code 404. Truncated server response: {“errors”:[{“code”:17,”message”:”No user matches for specified terms.”}]} (use muteHttpExceptions option to examine full response)
    って出てきました…

    もしかして、FF比100%だと絶対にエラーで返されるんですかね?

    • 𝔹𝕖𝕝𝕥𝕫 より:

      >FF比100%だと絶対にエラーで返されるんですかね?
      新しくアカウントを作り、フォロー/フォロワーが0人の時に試したのですが同じエラーが出ました。
      該当のユーザーがいないとエラーになるようだったので、エラーが出ないように修正したバージョン13を公開しました。
      エラーが気になるようであればバージョンを更新して試してみてください!

  4. act2-1 より:

    わざわざありがとうございます!

  5. 43nQ より:

    参考になる記事をありがとうございます。初心者ですが、わかりやすくとても参考になっています。
    質問があります。「リストに書いてある人はフォローをしない、解除をしない」といったような機能を追加したいのですが具体的な方法がわかりません。いったいどのようにすれば良いのでしょうか?
    調べてみたところ、取得されたユーザーIDからリストに書いてある人をspliceメソッドとindexOf()メソッドを使って削除すれば良いのではないかと思ったのですがあまり理解できませんでした。。。

    • 𝔹𝕖𝕝𝕥𝕫 より:

      > spliceメソッドとindexOf()メソッドを使って削除すれば良いのではないかと思ったのですが
      はい、あってます!
      具体的な方法としてサンプルのコードを書いてみたので参考にしてみてください。
      https://gist.github.com/belltreeSzk/f08a34332e0855d38487d7f128002271

      結構色々な方法で出来るので自分にあった方法を探してみてください!
      (私は配列を作ってpushするサンプルの2番目の方法をよく書きますね〜)

  6. 43nQ より:

    返信ありがとうございます。
    また質問なのですがignoreUserIdsをリストから取得するには具体的にどのようなコードにすればよいでしょうか? 『GASでこれはどう作る?〜実装サンプル集〜【プログラミング初心者向け】』の記事をを参考にして[ ‘ユーザーID’, ‘ユーザーネーム’,’ユーザー名’]というリストからユーザーIDを取得するコードを書こうとしたのですがよくわかりません。
    getUserIdsFromSheet関数を使用してみたけれどうまくいかず、2次元配列というものだからではないかと考え1次元配列に直してみたのですが、うまくいきませんでした。。。

    • 𝔹𝕖𝕝𝕥𝕫 より:

      あ、認識が違っていたかもしれません。

      ignoreUserIds は特にコードを書く想定ではありませんでした。
      `updateFollowOnlyUser` や `updateFollowedOnlyUser` を実行すると以下の画像のようにスプレッドシートにアカウント情報が書き込まれるので、そこからユーザーIDをコピペしてくるのを想定していました。
      やりたいことがもし違っていたらまたコメントください!

  7. 43nQ より:

    すみません、説明不足でした。ブラックリストやホワイトリストのようにフォローをしない、解除をしない人をまとめたスプレッドシートを作成してシートに載っている人を候補から外すようにしたいです。その場合にはどのようなコードにすれば良いでしょうか?

    • 𝔹𝕖𝕝𝕥𝕫 より:

      > シートに載っている人を候補から外すようにしたい
      なるほど、わかりました!

      `TwitterClient.getUserIdsFromSheet` という関数はシートの名前を変えることで別のシートからデータを取ってこれるのでそれを利用すると簡単に出来ます。
      『シート1』からシートをコピーして『ホワイトリスト』というシートを作って、処理で除外したい人だけをまとめたら、以下のコードを参考にしてみてください。
      https://gist.github.com/belltreeSzk/bbc07a51dc81d5f71e79b5768ad12768

  8. 43nQ より:

    ありがとうございます。おかげさまで機能を追加することができました!!

タイトルとURLをコピーしました