void*

おいらは汎用ポインタになれるのか?自分が普段やってることがいかに繁雑か理解するためのメモ

[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()

で対応することにした。今の所、うまく動いている。おそらく永遠に動いてくれるだろう。