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

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

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

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

Q&A

解決済

1回答

7657閲覧

GASで置換したいのです その2

TarouBetsimei

総合スコア11

Google Apps Script

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

0グッド

0クリップ

投稿2017/01/15 01:16

編集2017/01/15 03:30

googleのスプレッドシート上のセルの文字列を置き換えたいのですが なかなかうまくいきません

下記のソースは動作しますが、置換したい文字列の最初のものしか置換できません
「/g」をいれればいいのかなと思うのですが、その編集がうまくいきません

var 作業 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("作業"); // 作業シート var 単語 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("単語"); // 単語シート for (i = 1; i <= 単語.getLastRow(); i++) { var tango = 単語.getRange(i,1).getValue(); var yakugo = 単語.getRange(i,2).getValue(); var kekka = 作業.getRange("A1").getValue().replace(tango,yakugo) 作業.getRange("A1").setValue(kekka); }

上記ソースに「/g」を編集する方法につき
連投となりますが、ご指導方よろしくおねがいします

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

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

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

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

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

kei344

2017/01/15 03:05

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
hikochang

2017/01/15 03:19

複数の処理を連続して書くことをメソッドチェーンと呼ぶようですが、 質問する時はメソッドチェーンを分解しないと見にくいです。 分解した上で、どこでうまく言ってないかを質問しましょう。
TarouBetsimei

2017/01/15 03:20

ご指摘のとおり修正しました m( )m
guest

回答1

0

ベストアンサー

// 単語置換テーブル指定
var 単語= sheet.getRange("B1:C10");

// 置換テーブルをループ
for (i = 1; i <= 単語.getLastRow(); i++) {
// A1の値を取得
var A = 作業.getRange("A1").getValue();

// B1,B2,B3,....B10の値を取得
var I1 = 単語.getRange(i,1).getValue();

// C1,C2,C3,....C10の値を取得
var I2 = 単語.getRange(i,2).getValue();

// var A に対して置換処理を実施
var B = A.replace(I1,I2);

// 値をA1に書く戻す。(*ここにブレーク)
作業.getRange("A1").setValue(B);
);

と言う感じに処理を分解して、うまくいかない部分を調べると解決します。

多分最後の処理にブレークを設定してデバッグすれば各変数が自分の思った通りに動いているか確認できます。

もしかして知りたいのは、、、以下ですか?
var regExp = new RegExp( I1, "g" ) ;
var B = value.replace( regExp , I2 ) ;

https://syncer.jp/javascript-reverse-reference/how-to-replace-text

投稿2017/01/15 03:01

編集2017/01/15 03:34
hikochang

総合スコア648

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

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

TarouBetsimei

2017/01/15 03:58

そのとおりです 正規表現に変数を編集する方法がわかりませんでした RegExpで動くようになりました いろいろ指導いただきありがとうございます。感謝!
hikochang

2017/01/15 04:06

A1セルに"hogehoge" B1セルに"o" C1セルに"a" getRange("A1").replace( getRange("B1"), getRange("C1") ); を実施すると、結果が"hagehoge"になります。期待値は"hagehage"です。2つ目のoが置換されません。 など要点を絞った質問の方が早く回答してもらえます。ループを使用していて、最初だけしか置換されないと書かれると、ループの1回目しか動かないのかと思ってしまいます。
TarouBetsimei

2017/01/15 04:56

考えて調べて纏めて質問するようにします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問