2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Google Spreadsheet】 セルの表示形式変更による getValue の型の変化

Last updated at Posted at 2019-11-08

セルの「表示形式」変更で何が起きるのか?

GASでシートを集計する際、getValue か getValues で値を取得することになると思うけど、古事記によれば

The value may be of type Number, Boolean, Date, or String depending on the value of the cell.
Empty cells return an empty string.

値は、セルの値に応じて、数値型、ブール型、日付型、または文字列型になります
空のセルは空の文字列を返します。

とある。

ところが他人が作ったシートをGASで集計した時、型がバラバラで地味に上手く動かん事が稀に良くあって、ウキー!ってなる

そう!
  セルの「表示形式」!!!
だいたいお前のせいなんだよ

結論から言うと

表示形式によるSpreadsheetの型変化.PNG
こうなる。
見てわかる通りDate型はセルの表示書式の影響を受けやすい。
ただし、2019年12月25日水曜日 とか 12/25 のように日時として使えるカスタム形式であれば、getValue時もDate型は保持される。

型を調べた方法

カスタム関数から prototype.constructor.name でクラス名を取得した。
調べかた.PNG

コード.gs
function getConstructorName(value) {
  return value.constructor.name;
}

このやり方でクラス名を取得するのはブラウザ依存するらしいけど、GAS内部では普通に使えるっぽい。

Booleanに関して

BooleanをCheckboxとして表示できますが、Checkbox化後に書式なしテキストにした場合に挙動が変なことになる。
Checkboxを書式なしにすると.gif
これはいかにもバグっぽい挙動なので、さすがに入力者も何かやらかしたのか分かると思うので、それほど目くじらを立てなくて良いかな?と

Stringで 'TRUE' とかコピペされるより、型的にはよほど安全です。

データの入力規則

データの入力規則の場合、リスト指定で結構なイタズラができる。
データの入力規則.PNG
データの入力規則.gif
うーん、この…

いかがでしたでしょうか?

この仕様、いかがなものでしょうか?

おしまい

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?