Google Apps Script

【GAS】スプレッドシートのランダムな行データを取得してツイート(GAS×TwitterBot⑤)

GASでTwitterBotを作ろう5-2

こんにちは、GAS大好きのもり(@moripro3)です!

「Google Apps ScriptでTwitterBotを作ろう!」をシリーズでお届けしています。

このシリーズで作るのは「自分のブログからランダムな1記事を取得して、タイトルとURLを、毎日指定の時刻に自動ツイートするBot」です。

前回は、GASでTwitterに投稿する機能を作りましたね!

GASでTwitterBotを作ろう4
Google Apps ScriptでTwitterに投稿するスクリプト(GAS×TwitterBot④)GoogleAppsScriptを使ってTwitterBotを作ろう!シリーズ第4回目は、Twitterアカウントとアプリの連携認証の方法・GASでTwitterに投稿するスクリプトを紹介してします!...

そして、シリーズ全体の流れがこちらです。

もり
もり
いよいよシリーズ最終回だよ!
GAS×TwitterBotの5ステップ
  • 【Step1】Twitter Developerアカウントの申請(済)
  • 【Step2】アプリ情報を登録してAPIキーを取得する(済)
  • 【Step3】ブログ記事の一覧をGoogleスプレッドシートに作成する(済)
    • ①WordPressの既存記事の一覧をCSV出力する
    • ②新規投稿記事のタイトルとURLをスプレッドシートに追記する仕組みを作る(IFTTT使用)
  • 【Step4】GASでTwitterに投稿するスクリプトを作る(済)
  • 【Step5】GASでスプレッドシートのデータを取得してツイートする ← 今回はコレをやるよ

GASでTwitterに投稿するスクリプト

前回作成したスクリプトがこちらです。

postTweet関数を実行すると、このようにTwitterに投稿できます。

tweetbot29

payloadのstatusオプションがツイート本文です。ここに、ツイートしたい文字列を置くのが今回の目的です。

スプレッドシートからランダムな1行を取得してツイートするスクリプト

ツイートする内容はこの3つです。

  1. ヘッダー(日付+固定文字列)
  2. 記事タイトル
  3. 記事URL

ツイートのイメージがこちら
TweetBot4-1

titleとurlは、スプレッドシートの2行目~最終行の間でランダムに取得します。

TweetBot4-2

それでは、下記の3つを作っていきます

  1. header
  2. title
  3. url

今日の日付データを作成(header)

ヘッダー部の「3月6日(水)」のような日付データを作成する関数です。

ランダムな行番号からタイトルとURLを取得(title+url)

スプレッドシートからランダムに「記事タイトル」と「記事URL」を取得し、headerと結合して、ツイート本文を作成する関数です。

ランダムな行番号を取得する方法

ポイントはこの1行です

var row = Math.ceil(Math.random() * (lastRow-1)) + 1;

モリ
モリ
なんか難しいぞ、説明してくれ
もり
もり
ポイントは数学演算のMathオブジェクトだよ

Math.random()
→0以上1未満の乱数を返す

Math.ceil(x)
→xの小数点以下を切り上げた整数を返す

最終行の行番号は変数lastRowに格納されています。lastRow = 50のときの計算イメージです。2~50までのランダムな数字が算出されます。

var row = Math.ceil(Math.random() * (lastRow-1)) + 1;

TweetBot4-9

 

モリ
モリ
ランダムってことは、2日続けて同じ記事がピックアップされる可能性もあるんだな
もり
もり
うん、そうだね、まぁそれもおもしろいじゃん!

Twitterに投稿する

前回作成したpostTweet関数の、payloadのstatusオプションにツイート本文を当てはめればOKです。ここでは、変数postMessageとしてます。

スクリプトまとめ

Twitterにツイートを連続投稿しすぎるとアカウントが凍結される恐れがあります。

CreatePostMessage関数でツイート本文が想定どおりに作成されているかは、ログ出力で確認しましょう。

TweetBot4-7

指定の時間にスクリプトを自動実行する

これで、スプレッドシートの記事一覧から、ランダムにタイトルとURLを取得してツイートする仕組みができました

モリ
モリ
おい、これ、毎日実行しなきゃいけないのか?めんどいぞ
もり
もり
まさか!毎日自動で実行されるように設定するよ!

プロジェクトのトリガーを設定

時計のマークをクリックします(現在のプロジェクトのトリガー)

TweetBot4-3

画面右下の「+トリガーを追加」をクリック

TweetBot4-4

赤枠欄を設定して、右下の「保存」をクリック

  • 実行する関数はpostTweet
  • 時刻は1時間単位で指定
TweetBot4-5

これで設定完了です!

トリガーの編集

設定内容を変更したい場合は、鉛筆マークをクリック

TweetBot4-8

まとめ

シリーズおつかれさまでした!

各回の目次です!おさらいにどうぞ!

もり
もり
みんな、アレンジしてオリジナルのBotを作ってみてね~