なか日記

一度きりの人生、楽しく生きよう。

PVをツイートするサービスのコメントを、Googleスプレッドシートを使って日替わりで変えちゃおう

先日、PVをツイートするサービスにコメントを変更出来るWebAPIを追加しました。

これで簡単にコメント変更出来るね。と言いたいところですが、WebAPI公開されてもそれをどう叩くかという問題があると思います。

きっと、「そんなもん公開されても、どうやったらいいかわからんぜよ!」って思ってる人も少なからずいるんじゃなかろうかと。

そんな人のために、簡単にコメントを変更出来る仕組みを紹介しますね。

Googleスプレッドシートを使おう

Googleスプレッドシートでスクリプトを実行できます。まぁ、Excelのマクロ(VBA)みたいなもんですね。

このスクリプトですが、スケジュール実行する機能があるんです。ここまでで大体見当つきましたよね?

そう、スクリプトでWebサービスを叩く処理を書いて、それをスケジュール実行することによって、毎日自動でコメントを変更できるんです。

作り方

作り方は色々ありますけど、私が考えたやつを紹介します。

スプレッドシートを新規作成

なにはともあれ、スプレッドシート本体がないと話が始まりません。とっとと作ってしまいましょう。

シート本体

下の様な表を作ります。

f:id:nakaji999:20160408130033p:plain

A列に次回のスクリプトで設定する内容を「○」で指定し、
B列には設定したいコメントをずらずらーっと書いておきます。

これをスクリプトで処理します。ざっくりいうと下の様な感じ。

  1. 「○」がついている行のコメントをPVをツイートするサービスに設定
  2. 次回のために「○」がついてる行を下へ移動する(一番下まで行ってたら一番上に移動)

スクリプト

メニューの [ツール]-[スクリプト エディタ...] からスクリプトエディタを開きます。

f:id:nakaji999:20160408123837p:plain

そして、下のコードをペタッと貼り付けて下さい。トークンは設定画面で取得したトークンに置き換えて下さいね。

function changeDailyComment(){
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadSheet.getSheets()[0];
  
  // 今回設定する行とコメントを取得
  var comment, row;
  for (row=2; row<=1000; row++) {
    var check = sheet.getRange(row,1).getValue();
    if (check == "○") {
      comment = sheet.getRange(row,2).getValue();
      break;
    }
  }
  
  // 次回予定の行を取得
  var nextRow = row + 1;
  var nextComment = sheet.getRange(nextRow, 2).getValue();
  if (nextComment == "") {
    nextRow = 2;
  }
  
  // PVをツイートするサービスへ送信
  Logger.log(comment);
  postPvTweetService(comment);

  // 次回予定を更新
  sheet.getRange(row,1).setValue("");
  sheet.getRange(nextRow,1).setValue("○");  
}

function postPvTweetService(comment){
   var payload =
   {
     "ApiToken" : "[自分が取得したトークン]",
     "Comment" : comment
   };

   var options =
   {
     "method" : "post",
     "payload" : payload
   };

   UrlFetchApp.fetch("http://tweetpvservice.nkd.jp/api/DailyComment", options);
}

トリガー(スケジューラ)の設定

後はトリガーの設定をするだけです。

下の時計のアイコンをクリックするとトリガーの一覧ウインドウが表示されます。「トリガー作りたかったらここクリックせいや」的なリンクがありますのでそこをクリックします。

f:id:nakaji999:20160408130917p:plain

実行契機となるイベントは「スプレッドシートから」と「時間主導型」の2種類があります。今回の用途でいうと「時間主導型」ですね。

そして、タイマーは次の6種類から選択します。

  • 特定の日時
  • 分タイマー
  • 時タイマー
  • 日タイマー
  • 週タイマー
  • 月タイマー

PVをツイートするサービスでは毎日1回なので、日・週・月のいずれかになると思います。日・週・月を指定すると、「午前 0 時~1 時」のような選択を行うようになりますが、その間で1回実行するよってことのようです。なかなか直感的にはわかりづらいですね。

f:id:nakaji999:20160408131053p:plain

まとめ

どうでしょう?これならかなり簡単にコメントが変更できると思います。

ここで作ったシートを公開しておきます。スクリプトを見るには自分の環境にコピーする必要があるっぽいです。興味がある人は、メニューから「ファイル」-「コピーを作成」してみて下さい。

docs.google.com

おしまい。