こんにちは。
先日スマート家電リモコンを使った自室の温度・湿度モニターを作成したのですが、一月ほど前から更新されていないことに気が付きました。
前回の温度湿度モニター作成はこちら。
aki-lab.hatenadiary.com
原因としてはIFTTTによるGoogleスプレッドシートの書き込みが2000行が最大となっているからでした。
そのため、参照しているスプレッドシートが更新されずにモニターも停止していました。
実際に保存されているGoogleドライブを見に行ってみると、自動でもう一つファイルが作成されていました。
2000行を超えると自動で次のファイルを作成するようです。
APIの仕様等考えると、ファイル共有設定など複数のスプレッドシートを扱うのは煩雑になってしまします。
そこで、温湿度は1時間毎に追記されるので、それに合わせて自動で先頭行を減らすようにしようと思います。
2000行であっても3カ月弱のデータは確認できるので、私の用途的には十分かなと。
そこで今回はスプレッドシートのマクロ機能を使用しました。
まず、対象の2000行以内に抑えたいスプレッドシートを開きます。
そこで拡張機能からマクロを記録を選択します。
そこで記録が開始されたら先頭行を削除します。
記録を終了して、先頭行の削除のマクロとして保存します。
次に、拡張機能からマクロを管理を選択します。
次に右の拡張オプションからスクリプトを編集を選択します。
すると記録されたマクロがスクリプトとして表示されているので、左のメニューからトリガーを選択します。
そこで新しいトリガーを作成します。
そこで、先頭行削除のトリガーを定義します。
2000行以内に抑えるためには
- スプレッドシート編集、もしくは変更時
- 一時間おきに実行
といった方法があります。
今回はIFTTTがAPIでアクセスした際も編集・変更としてマクロがじっこうされるか分からなかったので、一時間おきに実行する仕様としました。
あとは保存すれば完了です。
一時間おきに先頭行の削除・IFTTTによる温湿度情報の追記が行われるので2000行より増えることはありません。
当面の間はこの仕様で様子を見てみようと思います。
追記:上記トリガー方法は変更時にすれば問題なく2000行に到達しないようになります。