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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

3286閲覧

GAS 指定の列の指定文字列を正規表現で一括置換したい

ifumi

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/06/08 01:34

GAS 指定の列の指定文字列を正規表現で一括置換したい

GASにてマクロを利用して下記動作を行いたいです。

■元データ
A-J列まで、それぞれ約1,000行文字列が入っている

■やりたいこと
1.I列の文字列「AAA BBB CCC」の「 (全角スペース)」を「 (半角スペース)」に置換したい
└文字列「AAA BBB CCC」は半角スペース、全角スペースが混在している
└混在しているため列に対して一括で「 (全角スペース)」を「 (半角スペース)」に置換したい

2.C列の文字列「AAA 12345」の「 (半角スペース)12345」を削除したい。
└文字列「AAA 12345」の数字部分はセルごとに異なる、ただし数字部分の文字数は5文字固定
└正規表現「......$」にて「 (半角スペース)12345」をマクロで行いたい

■やったこと

function myFunction5() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('C:C').activate(); spreadsheet.getRange('C:C').replace(/......$/g,""); };

■エラー
TypeError: spreadsheet.getRange(...).replace is not a function

■解決したいこと
1.2を連続でやるためにはどのようにすれば良いでしょうか?

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

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

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

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

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

Zuishin

2022/06/08 01:39

セルの内容を配列に入れ、ループか map() で置換し、それを元の場所に書き出します。
guest

回答1

0

ベストアンサー

gs

1spreadsheet.getRange('C:C').replace(/......$/g,"");

「getRange」の戻り値には「replace関数」はありませんので、エラーになります。
「replace関数」を使用するには「文字列」型を取得する必要があります。

セルの値を置換して置き換えるようなので

  1. getValues()で指定したセルの値を取得し
  2. ループ処理でセルの値を置換
  3. 置換した値をセルに書き込む

のようにすれば良いのではないでしょうか

以下、参考コードです。

gs

1function myFunction6668() { 2 var sheet = SpreadsheetApp.getActiveSheet() 3 4 let iRange = sheet.getRange("I:I") 5 let iReadValues = iRange.getValues() 6 let iWriteValues = iReadValues.map(e => { 7 return [e[0].replace(/ /g, " ")] 8 }) 9 iRange.setValues(iWriteValues) 10 11 let cRange = sheet.getRange("C:C") 12 let cReadValues = cRange.getValues() 13 let cWriteValues = cReadValues.map(e => { 14 return [e[0].replace(/ /g, "")] 15 }) 16 cRange.setValues(cWriteValues) 17}

投稿2022/06/08 02:15

k.a_teratail

総合スコア845

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

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

ifumi

2022/06/08 02:39

丁寧におしえていただきありがとうございます。 function myFunction6668() { var sheet = SpreadsheetApp.getActiveSheet() let iRange = sheet.getRange("I:I") let iReadValues = iRange.getValues() let iWriteValues = iReadValues.map(e => { return [e[0].replace(/ /g, " ")] }) iRange.setValues(iWriteValues) let cRange = sheet.getRange("C:C") let cReadValues = cRange.getValues() let cWriteValues = cReadValues.map(e => { return [e[0].replace(/......$/g, "")] }) cRange.setValues(cWriteValues) }; 先程実行したところ下記の表記が出てまいりました。 TypeError: e[0].replace is not a function (匿名) @ マクロ.gs:55 myFunction6668 @ マクロ.gs:54 こちらは、e[0] を認識していない? ということでしょうか?
ifumi

2022/06/08 03:48

ありがとうございます!! 教えていただいたコードを元にチェックしていきましたら無事行けました!! 丁寧に対応いただきありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問