自分専用のTweetBotを作り方を完全公開します【コピペOK】(2020/3/7更新)

プログラミング
この記事は約8分で読めます。
スポンサーリンク

お盆の期間、皆さんはいかがお過ごしでしたでしょうか?

私は実家に1週間帰省し、その間8月前半できなかったブログの方に注力していました。

少しずつ記事が溜まってきたということで、自分の記事が埋もれないように定期的にツイートする自作ツイートBotを作りました。

今回はその作り方を完全公開していこうと思います!

【2020/3/7追記】Property store is required. が出た場合の対応

2020/02/06にGoogle Apps Scriptがアップデートされました。

具体的には「V8ランタイム」というプログラムが動くようになり、機能が拡張されました。

それによって色々とコードに修正が必要になり、現在のコードでは動きません。

このページの方法でTwitterBotを作る場合は、以下の手順で設定を直してください。

ただこれは一時的な対応になります。

いつかサポートが切れる可能性はあるので早めに手を打っておこうと思います〜💪

では、本編をどうぞ!

TweetBotとは

定期的にTwitterなどのサービスに投稿を行うBotサービスのことを言います。

有名なサービスを挙げると、Twittbotなどが挙げられます。

TweetBotを使用すると投稿の投稿経路にそのサービスが残るため、「あぁ、このアカウントはBotか…」と思われ、敬遠されがちです。

ただTweetBotの効果は大きく、定期的に投稿を行うアカウントはFollowerも定着します。

そのため、自作のBotを作り、印象を少しでも良くしようと思い今回自作してみようと思い、今回行動に移しました。

今回作成したTweetBotの構成

Googleスプレッドシートに書いた投稿内容を、定期的にGoogle Apps Scriptを使ってランダムで取得して、投稿を行います。

Googleのサービスを使用するため、Googleアカウントを用意してください。

「① 時間になったら実行」はGoogleAppsScriptに最初からある機能を使用しています。

「やること」ではコードを書くことになりますが、認証や投稿内容抽選などのプログラムは紹介するコードをコピペしてもらえればOKです!

TweetBotを作る上で用意すること

Twitter開発者用アカウント

まずはTwitterに投稿するアカウントが必要です。

以前、Twitterの開発者アカウントを作成した記事を書いているので参考にどうぞ!

Googleアカウント

今回はGoogleスプレッドシートを使ったツールなので、Googleアカウントが必須です。

今使っているアカウントがあればそれを使ってもらって問題ありません。

作成手順

Twitterアプリを作りキーを確認する

Twitterに投稿するためには投稿の処理元が自分自身であることを照明するキーが必要です。

同じ記事になるのですが、3章でキーの場所を説明していますのでメモをしておいてください。

シートを用意する

まずはGoogleスプレッドシートを新しく作りましょう。

Googleドライブのページの左上の「新規」からGoogleスプレッドシートを選択します。

スプレッドシートが表示されたらツールからスクリプトエディタを選択します。

エディタ画面が表示されたらコード.gsに以下のコードをコピペします。

// 認証用インスタンス
var twitter = TwitterWebService.getInstance(
  'ここにTwitterのConsumerKeyを入れる',       // 作成したアプリケーションのConsumer Key
  'ここにTwitterのConsumerSecretKeyを入れる'  // 作成したアプリケーションのConsumer Secret
);

// 認証
function authorize() {
  twitter.authorize();
}

// 認証解除
function reset() {
  twitter.reset();
}

// 認証後のコールバック
function authCallback(request) {
  return twitter.authCallback(request);
}

// セルを取得
var sheetData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1"); // 「シート1」はシート名
var postMessageCell = sheetData.getRange(2, 2); // セルの位置。縦横それぞれ1~の番号で指定できる

// ツイートを投稿
function postUpdateStatus() {
  var message = pickUpTweet();
  if (message == "") {
    return;
  }
  var service  = twitter.getService();
  var response = service.fetch('https://api.twitter.com/1.1/statuses/update.json', {
    method: 'post',
    payload: { status: message }
  });
}

// ツイートを選択
function pickUpTweet() {
  var cells = sheetData.getRange(2, 1, sheetData.getLastRow() - 1, 2).getValues();
  var weightSum = 0;
  for (var i = 0, il = cells.length; i < il; i++ ) {
    weightSum += cells[i][1];
  }
  if (weightSum == 0) {
    return "";
  }
  var randomValue = weightSum * Math.random();

  var postMessage = "";
  for (var i = 0, il = cells.length; i < il; i++ ) {
    randomValue -= cells[i][1];
    if (randomValue < 0) {
      postMessage = cells[i][0];
      break;
    }
  }
  return postMessage;
}

こちらのコードは以下の記事を参考にしました。認証周りはコピペです🙏

Google Apps Script (GAS) でTwitterへ投稿するだけの機能を実装してみる - Qiita
# はじめに GASを使ってみたくて何か良い題材が無いかなーと探していたところ、Twitter Bot という題材を見つけました。 ただ、もっと一番シンプルなサンプルを練習用に作ろうということで、手動でTwitterに投稿するだけ、の...

続いて、Twitterの機能を呼び出す便利関数をまとめたライブラリをインストールします。

プロジェクトキーは

1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF

です。

Twitterアプリを編集する

最後にTwitterアプリを調整します

具体的に調整するポイントは2点です

  • App name が意図したものになっているか
  • CallbackURLsをGoogleAppsScriptにしているか

です。実際の設定を下に添付しているのでご覧ください。

CallbackURLsですが、

https://script.google.com/macros/d/スクリプトID/usercallback

になります。スクリプトIDは「ファイル」→「プロジェクトのプロパティ」から

「情報」タブの「スクリプトID」に記載されています。

これらを確認したらTwitterの設定は保存してください。

これで準備は完了です。次は実際に動かしてみましょう!

実際に動かしてみよう

それでは実際に動かしてみます。

Twitterの認証を行う

基本的には下記画像のように機能を選んで再生ボタンを押すことで実行されます。

認証の方法は先程の記事を参考にしてください

Google Apps Script (GAS) でTwitterへ投稿するだけの機能を実装してみる - Qiita
# はじめに GASを使ってみたくて何か良い題材が無いかなーと探していたところ、Twitter Bot という題材を見つけました。 ただ、もっと一番シンプルなサンプルを練習用に作ろうということで、手動でTwitterに投稿するだけ、の...

投稿データを作る

認証が終わったら実際に投稿を行うのですが、投稿用のデータを作る必要があります。

データは最初に作ったスプレッドシートに記入していきます。

今回はコピペを前提としているので、セルの場所などを細かく指定していますが、コードを書き換えて使用する際は、適宜調整してください。

最後に postUpdateStatus を実行して実際に投稿されているのを確認できれば成功です!

自動的に投稿するように設定を行う

最後に自動でBotが動くように設定を行います。

スクリプトエディタのタイマーボタンを選択してトリガーを作成します

遷移したあと右下に「トリガーを追加」というボタンが出ていると思うので選択して以下のダイアログを表示させます。

イベントのソースを選択を時間主導型に設定しておくことで時間経過による実行が可能です。

今回は頻度を多くするとウザいので6時間おきに設定してみました。

まとめ

ということで今回はTwitter自動投稿botの作成方法を紹介しました。

極力画像を多めで説明したのでエンジニアではない人でも出来る内容になっていると思います。

今回自作したBotの強みは投稿に重みを付けられることです。

このおかげで、最近投稿したあの記事を多めに流したいといった調整や、リンクばかりだとウザがられるから啓蒙ツイートを8割、リンクを2割で流したいといった調整が可能です。

ぜひ挑戦してみてください〜

ここまで読んでくださりありがとうございました!

コメント

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