1
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?

GAS Googleスプレッドシートの Query で値が取得できない!

Posted at

image.png

はじめに

今回は、GAS で Query を利用した際にハマってしまった内容です。
下部の”参考”に記載させて頂いた投稿により解決する事ができました。
次にハマった方の”検索”に少しでもヒットすればと投稿します。

ざっくり処理

  1. Slack Bot から値を入力・選択して、Google Apps Script へリクエスト
  2. Google Apps Script で、対象の Google スプレッドシートから Query で別シートに抽出
  3. 抽出結果を処理して、Slack Bot へ返却

問題

Google スプレッドシートで Query の処理を行っていたのですが、特定の"文字列"項目だけ値が取れない

ただ、

  • 裏の処理で固定文字を入れているレコードは"文字"でも、Query で取得できる
  • 対象項目の値を"文字" -> "数値"に手動で変更すると、Query で取得できる

原因

Google sheet Query Function Returns blank result from cell with data

文字列と数値の混在する列で、文字列が少数派だと勝手に空白セルに変換してしまうらしい。

→ えっ!? これはバグではないでしょうか? > Google さん 

解決策

Query を修正。

=QUERY(ARRAYFORMULA(TO_TEXT('シート1'!A:X)),"select Col1... where Col1...")
  • TO_TEXT : 対象を全て文字に変換
  • ARRAYFORMULA : 配列数式に変換

ポイント

  • Query 内で利用する項目が、"A" -> "Col1" に変わるので注意!
  • 全部文字になるので、日付オブジェクトとかの項目は個別に型変換が必要になります

おわりに

stackoverflow に数年前から記載されていて、今も発生するという事は仕様なんでしょうね。。。


参考(感謝)

1
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
1
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?