「ラズパイ」と「スプレッドシート」で全自動水耕栽培器をつくって女の子にTwitterで実況しながら栽培してもらう:⑩各種機能編 ~Googleスプレッドシートに設定シートを作り、そこからツイートする~

女の子につぶやいてほしい

そういう願望があるので早速つぶやいてもらおう。

第十回となる今回はTwitterスプレッドシートの連携させて、スプレッドシートに記載した内容をつぶやいてもらうぞ!

 

今回つぶやいてくれる美少女

f:id:udonnamerou:20200814000701p:plain

長野県出身の川上ちりやちゃんです。かわいい。

絵の描ける友人がいたのでアイコンを書いてもらいました。よき友達をもってうれしい...。実はこの友達、僕が高校時代に作ってた動画でも絵をかいてもらったことがあるので気になる方は見てください黒歴史なのであまり見せたくはないのですが...。)

 

ツイートには何が必要?

今回はあくまで野菜の様子を美少女がつぶやくといった内容なので、ただのBotとは違います。撮影した画像を一緒に投稿したり、あたかも美少女がしゃべっている感じに仕上げたいのでリアルタイムで育てているんだなって感じを出していきたいわけです。

そういうわけで、ちりやちゃんがつぶやく内容をいくつかカテゴライズする必要があります。以下、カテゴリーのリスト

  • 日報(おはよう!などの定型文)
  • 月齢(今日はいい月だね!とかつぶやかせたい)
  • 特殊イベント(クリスマスだよ!とか特定の日付につぶやかせたい)
  • 画像付きイベント(今の様子はこんな感じだよ!ってつぶやかせたい)
  • 豆知識・雑談(ちりやちゃんに植物に関する豆知識を披露してほしい)

そして、これをシートに直すとこんな感じになる。

f:id:udonnamerou:20200814001923p:plain

これをGAS(Google Apps Script)で読み取って、つぶやかせようという感じである。
もうちょっと具体的に話すと、D列にあるcodeに記載されている内容から、条件を分岐させて、前回の記事のような感じで取得したデータをもとに、あいさつだとか雑談といった多様なツイートを実現させようという感じである。

 

例えば日報についてつぶやかせようと思ったらこうなる。

//日報の関数
function dairyReport(){
  const asa  = "asanichi";
  const hiru = "hirunichi";
  const yoru = "yorunichi"; 
  var hour = getTime();

   switch (true) {
      case hour == getSettingTime(asa):
        _greetNi(asa)
        break
      case hour == getSettingTime(hiru):
        _greetNi(hiru)
        break
      case hour == getSettingTime(yoru):
        _greetNi(yoru)
        break
  }  
}

//dairyReport
function _greetNi(code){
  var currentrow = returnRow(code)
  var message = csheet.getRange(currentrow, C_SEF).getValue()

 //作成したメッセージをツイートしてくれる自作関数sendMessageToTw sendMessageToTw(message)

今回、GASを使ったスクリプトは大量にあるので、それをすべて紹介することは書く側も読む側も負担になると考える。したがって、のちにgithubにあげておくことにする。

 

また、このようにして作成した文章はTwitterAPIを使うことで、つぶやくことができる。こちらの記事を参照されたい。

さて、次回はいままでの機能をcronにして、ひとまずプロダクトが完成させるぞ!それではごきげんよう

前回:⑨各種機能編 ~取得情報をスプレッドシートにまとめる~

次回:⑪各種機能編 ~定期実行編~