(Last updated on )
Google スプレッドシート の 関数 QUERY のパラメータ 2 のクエリ文字列を解析できません: PARSE_ERROR: Encountered " "by" "BY "" at line 1, column 80. エラーが出たときの対応
Google スプレッドシート の 関数 QUERY のパラメータ 2 のクエリ文字列を解析できません: PARSE_ERROR: Encountered " "by" "BY "" at line 1, column 80. エラーが出たときの対応
同じような内容の Qiita
がすでにありました。
Google スプレッドシートのQUERY関数でBY列の値を取得する - Qiita
まとめ
Google スプレッドシート
で、下記エラーが出たときは、
SQL
の予約語である BY
を バッククォート(`) でくくり、エスケープするとエラーが発生しなくなる。
関数 QUERY のパラメータ 2 のクエリ文字列を解析できません: PARSE_ERROR: Encountered " "by" "BY "" at line 1, column 80.
やりたかったこと
コネクテッドシートから抽出したデータを、別シートに表示したい。
今回利用した関数
ARRAYFORMULA
別シートの指定した範囲のデータを取得。
配列数式から返された値を複数行または複数列に表示したり、非配列関数で配列を使用したりすることができます。
QUERY
ARRAYFORMULA
で取得したデータに対してクエリを実行して、任意のデータを抽出。
Google Visualization API のクエリ言語を使用して、データ全体に対するクエリを実行します。
エラーが発生したセル
=query(arrayformula('シート1'!A2:BZ),"select BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ where A = 'hoge' and B = 'hogehoge'")
エラー
関数 QUERY のパラメータ 2 のクエリ文字列を解析できません: PARSE_ERROR: Encountered " "by" "BY "" at line 1, column 80.
Was expecting one of:
"true" ...
"false" ...
"date" ...
"timeofday" ...
"datetime" ...
"timestamp" ...
"min" ...
"max" ...
"avg" ...
"count" ...
"sum" ...
"no_values" ...
"no_format" ...
"is" ...
"null" ...
"year" ...
"month" ...
"day" ...
"hour" ...
"minute" ...
"second" ...
"millisecond" ...
"with" ...
"contains" ...
"starts" ...
"ends" ...
"matches" ...
"like" ...
"now" ...
"dateDiff" ...
"quarter" ...
"lower" ...
"upper" ...
"dayOfWeek" ...
"toDate" ...
<ID> ...
<INTEGER_LITERAL> ...
<DECIMAL_LITERAL> ...
<STRING_LITERAL> ...
<QUOTED_ID> ...
"(" ...
"-" ...
"min" ...
"max" ...
"count" ...
"avg" ...
"sum" ...
"year" ...
"month" ...
"day" ...
"hour" ...
"minute" ...
"second" ...
"millisecond" ...
"now" ...
"dateDiff" ...
"lower" ...
"upper" ...
"quarter" ...
"dayOfWeek" ...
"toDate" ...
"(" ...
<STRING_LITERAL> ...
<DECIMAL_LITERAL> ...
<INTEGER_LITERAL> ...
"-" ...
"true" ...
"false" ...
"date" ...
"timeofday" ...
"datetime" ...
"timestamp" ...
<ID> ...
<QUOTED_ID> ...
"min" ...
"max" ...
"avg" ...
"count" ...
"sum" ...
"no_values" ...
"no_format" ...
"is" ...
"null" ...
"year" ...
"month" ...
"day" ...
"hour" ...
"minute" ...
"second" ...
"millisecond" ...
"with" ...
"contains" ...
"starts" ...
"ends" ...
"matches" ...
"like" ...
"now" ...
"dateDiff" ...
"quarter" ...
"lower" ...
"upper" ...
"dayOfWeek" ...
"toDate" ...
原因
BY
が、SQL
の予約語のため、エラーが出ていた。
エラー対応
BY
を バッククォート(`) でくくり、エスケープすることで対応した。
=query(arrayformula('シート1'!A2:BZ),"select BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,`BY`,BZ where A = 'hoge' and B = 'hogehoge'")
参考
Google スプレッドシート
の関数SQL
の予約語- 同じような内容の
Qiita