ちょいとややこしい話だが、スプレッドシートのトリガーの「編集時」を使ってユニークidを自動生成するスクリプトを仕込むことにした。
例えるならば、B列に「店名」を入力すると、A列へユニークidを自動的に挿入する仕組みだ。
A列は保護済み、C列以降に入力されてもA列へは挿入されないようにしている。
トリガーの「編集時」は結構便利で
function onEdit(event) { }
としておくと、それなりの情報が event に返ってくる。
詳しくは「 Event Objects」のページを参照してほしい
Event Objects | Apps Script | Google Developers
event.oldValue event.value
なんていう素敵なプロパティも存在している。あ〜素敵すぎ。
だがしかし、ひとつ問題が出た。たぶん、スルーしても問題ないレベルではあるが。
すでにB列に店名が書かれているがA列は空、その時にB列を空にした。
期待したのは
value : null
であったが、残念なことに
value: [oldValue]
が帰ってきた。はぁ????
実際のオブジェクトツリーはこんな感じだ。
jsonPayload: { eventObject: { oldValue: "裏口入学のぽんぽこ商事" value: { oldValue: "裏口入学のぽんぽこ商事" } } message: "onEdit() Event Object" }
value は 単一セルのときにしか機能しないので、配列が返ってくることはないはずだ。
この仕様は、まじでやめてもらいたい。
仕方がないので、
event.range.getValue()
で対応することにした。今の所、うまく動いている。おそらく永遠に動いてくれるだろう。