最近このブログのドメインの意味を本気で考えてしまいます。
devなのに……。
HerokuのFreeが終了してしまった
Twitterに自作短歌を6時間ごとにつぶやくBotを自作したのですが、環境が
- Heroku
- Python
だったのです。
が、最近HerokuのFreeが終わってしまうことにいまさら気づき、これはまずいと作り直しを決断しました。
環境どうしよう
何をどうするか考えて、Firebase使うとかいろいろあったのですが、なんとかして無料で作りたかったので、環境はGoogleAppScriptとGoogleスプレッドシートを使う方向で落ち着きました。
GASは仕事でも使ったことがあるので、なんとかなるだろうとGoogle先生に質問を投げまくりなんとか完成しました。
作り方
スプレッドシートに短歌をひたすら書きます。
カテゴリ分けてA列やB列を使おうか考えたのですが、設定しなおすこともなかなか……と思い、敢えてA列だけに書いていきます。
スクリプトはこうなりました。
code.gs
let twitter = TwitterWebService.getInstance(
'TwitterのAPI key', //API Key
'TwitterのAPI Secret key' //API secret key
);
//アプリを連携認証する
function authorize() {
twitter.authorize();
}
//認証を解除する
function reset() {
twitter.reset();
}
//認証後のコールバック
function authCallback(request) {
return twitter.authCallback(request);
}
function twitterPost() {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('words');
let rows = sheet.getLastRow();
let number = Math.floor(Math.random()*(rows));
let words = sheet.getRange(number,1).getValue();
let service = twitter.getService();
let endPointUrl = 'https://api.twitter.com/2/tweets';
let message = {
text : words,
}
let options = {
"method": 'post',
"muteHttpExceptions" : true,
'contentType': 'application/json',
'payload': JSON.stringify(message),
}
let response = JSON.parse(service.fetch(endPointUrl, options));
}
Twitterのdeveloperアカウントを取ります。
全部英語で書かないといけないので覚悟してください。
あと50単語書いてね、などと出てきます。英作文です。
ほかもろもろAPI keyなどを取得するのですが、アプリを作る際にv1も「Read & Write」の権限にしておかないとv2も書き込みができないので要注意です。
参考記事
とても参考になりました。ありがとうございます。
https://qiita.com/kagawakensan/items/bc8b8f0e333187b5f545