[GAS][onEvent] スプレッドシートで文字列の入力済みセルを空にした時の返り値
ちょいとややこしい話だが、スプレッドシートのトリガーの「編集時」を使ってユニーク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()
で対応することにした。今の所、うまく動いている。おそらく永遠に動いてくれるだろう。
