【GAS】新TwitterAPIへの移行作業ー備忘録1
自分はGoogleスプレッドシートとGoogleAppsScript(以下、GAS)、TwitterAPIを使った自動ツイートbotを3つ運用しているのですが、
そのうちの1つが2023/3/29午後から突然エラーで動かなくなりました。
ああ、ついに旧TwitterAPI動かなくなったか・・・と思ったのですが、
運用している3つのbotのうち1つだけが動かなくなっていたので、
何かおかしいなあと感じつつも、とりあえず原因究明してみることに。
エラーで落ちてるスクリプトのエラー詳細を見てみると、どのエラーも
「We're sorry, a server error occurred while reading from storage. Error code NOT_FOUND」となっていました。
ストレージ読み込みエラー?エラーコードNOT FOUND?3つのbotのうちなぜ君だけ?これ詰んでる?
いくつもの「?」が浮かぶ中、とりあえずこのエラーメッセージでググったところ、以下のサイトに辿り着きました。
上記サイトでは、このエラーの発生原因として以下が挙げられていました。
自分の実行環境と照らし合わせてみると、
1はまあ当然使用しているとして、
2はライブラリとしては「TwitterWebService」しか取り込んでないし、
3は複数人で実行することはない単純な個人的botなので、
直感的にはどれも当てはまっていなそうだなと思いました。
一応確認してみるかということで、GASプロジェクトに取り込んでいる唯一のライブラリ「TwitterWebService」を確認してみたのですが、、、想定外の事が起きていました。
GASでTwitterAPIを叩いている人はほとんど「TwitterWebService」を使用していると思うのですが、バージョン「2」を取り込んだはずなのになぜかバージョン「1」に変わってしまっていました。こわっ。
ちなみに自分が運用している3つのbotはすべて「TwitterWebService」のバージョン「2」を取り込んだGASオブジェクトで動いていますが、
bot1:2021/3に該当ライブラリを取り込んだGASオブジェクト
→バージョン「1」に書き換わっていた
(今回動かなくなったbot)
bot2:2021/3に該当ライブラリを取り込んだGASオブジェクト
→バージョン「1」に書き換わっていた
(なぜか元気に動いている)
bot3:2022/12に該当ライブラリを取り込んだGASオブジェクト
→バージョン「2」のままだった
(当然何事もなく元気に動いている)
という状況でした。
まあ趣味で作っている個人botなので、なぜバージョンダウンしてしまったのかを深堀りするのは時間があるときに調べてみることにして、
とりあえずバージョンが古くなったライブラリをいったん削除して再取り込みしたのち、Twitterアカウントの認証連携をやり直ししてみました。
(もちろん状況が悪化する可能性がある強引なやり方です。自己責任で。)
結果、手動実行でもトリガー自動実行でも正常終了するようになりました。
今回のTwitterAPI仕様変更によって、作成したスクリプトを変更しなければならないのは確定していたのですが、まずは意外なところからジャブが飛んできた感じ。
GASでTwitterAPIを叩いてる人は、同じ原因でスクリプトが動かなくなる可能性があると思うので、備忘録として残しておきました。誰かの役に立てればいいな。