Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

GASでのエスケープ

解決したいこと

GASで下記のような式を自動でセルに書き入れたいのですが、エスケープ記号?の入れ方が苦手で苦戦しています。

セルに入れたい式

=query({QUERY('202301'!A:Z,"select C,D,E");QUERY('202212'!A:Z,"select C,D,E");QUERY('202211'!A:Z,"select C,D,E")}, "where Col1 is not null")

下記のように途中まで書いて挫折してしまいました。

datThisMonth //202301
datBeforeMonth //202212
datBeforeBeforeMonth //202211

の3つの変数は決まっているとして、それらを下記に入れていきたいです。

var set_this = '=query({QUERY(\'' + datThisMonth + '\'' + "!A:Z,\"select C,D,E\"\); QUERY(\'' + datBeforeMonth + '\'' + "!A:Z,\"select C,D,E\"\)}";

上記の正解をお教えいただければ嬉しいです。
また恥ずかしながらこのようなエスケープの勉強法、作業の仕方(エディタの使い方)なども教えていただけば助かります。

よろしくお願いします。

0

1Answer

例えば、次のような修正はいかがでしょうか。

var datThisMonth = "202301";
var datBeforeMonth = "202212";
var datBeforeBeforeMonth = "202211";
var set_this = '=query({QUERY(\'' + datThisMonth + '\'!A:Z,"select C,D,E");QUERY(\'' + datBeforeMonth + '\'!A:Z,"select C,D,E");QUERY(\'' + datBeforeBeforeMonth + '\'!A:Z,"select C,D,E")}, "where Col1 is not null")';

この場合、下記のようにテンプレートリテラルを使うと、もう少し見やすいかと思われます。

var set_this = `=query({QUERY('${datThisMonth}'!A:Z,"select C,D,E");QUERY('${datBeforeMonth}'!A:Z,"select C,D,E");QUERY('${datBeforeBeforeMonth}'!A:Z,"select C,D,E")}, "where Col1 is not null")`;

動作テスト
https://jsfiddle.net/kf7ep96c/

1Like

Comments

  1. 早速ありがとうございました!
    希望通り動作し、勉強にもなりました。

Your answer might help someone💌