質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

5851閲覧

GAS createTextFinder で改行が有る場合の正規表現の検索ができない

tohkoh

総合スコア11

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2019/06/26 04:05

GAS で検索するときの正規表現にはまっています。
1つのセル内に改行コードが入っている場合の検索ができません。

1つのセルに
「123
あああ
2019/07/01」
と改行が入っている場合に createTextFinder で
正規表現の検索を行うと取得できません。

「123 あああ 2019/07/02」
と改行が無い場合はできるのですが。

var sheet = SpreadsheetApp.getActive().getSheetByName('test');
var re = "123[\s\S]*2019/07/02";
var textFinder = sheet.createTextFinder(re).useRegularExpression(true);
var ranges = textFinder.findAll();
Logger.log('ranges.length = ' + ranges.length) ;
for ( var i = 0; i < ranges.length; i++ ) {
Logger.log('A1Notation = ' + ranges[i].getA1Notation()) ;
}

検索文字列を
var re = "123.*2019/07/02";

に変更すると、改行がないセルは検索できますが、改行があるセルは取得できません。

画面上でCTRL + F の検索ボックスでは[\s\S]の表現は使えていましてヒットします。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

次のような変更は如何でしょうか。

テストケースとしてtestシート内のあるセルに下記のような文字列が入っている場合を想定します。

123 あああ 2019/07/02

From

javascript

1var re = "123[\s\S]*2019/07/02";

To

javascript

1var re = "123[\s\S]*2019\/07\/02";

参考

投稿2019/06/26 05:32

編集2019/06/26 05:34
kisojin

総合スコア899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tohkoh

2019/06/26 06:18 編集

ありがとうございます。まさに検索できました。\ 二つ続けるのですね。 なお、日付の間の / は影響がなかったようで、2019/07/02 と指定しても大丈夫でした。
kisojin

2019/06/26 06:37

ご返事ありがとうございます。解決したとのことで安心しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問