hene

hene.dev

(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

別シートの指定した範囲のデータを取得。

配列数式から返された値を複数行または複数列に表示したり、非配列関数で配列を使用したりすることができます。

ARRAYFORMULA - Google ドキュメント エディタ ヘルプ

QUERY

ARRAYFORMULA で取得したデータに対してクエリを実行して、任意のデータを抽出。

Google Visualization API のクエリ言語を使用して、データ全体に対するクエリを実行します。

QUERY - Google ドキュメント エディタ ヘルプ

エラーが発生したセル

=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'")

参考

関連記事