シートを操作する

【GAS】スプレッドシートで検索したテキストを置換する

220707時点、replaceWith(replaceText)・replaceAllWith(replaceText)がfalse判定となってしまうため利用はオススメしません。この記事では、代わりにsetValue()を利用した検索文字の置換え・GASの実行の様子を紹介してます。

GASでスプレッドシートで検索したテキストを置換するには「replaceWith(replaceText)」を利用する。

replaceWith(replaceText)

現在一致しているセルの検索テキストを指定されたテキストに置き換え、置き換えられたオカレンスの数を返します。

https://developers.google.com/apps-script/reference/spreadsheet/text-finder#findprevious

スプレッドシートで検索したテキストを置換するGAS実行の様子

replaceWith(replaceText)メソッドを利用しないで、スプレッドシートで検索したテキストを置換するGASを実行しています。

replaceWithreplaceText-yes
replaceWithreplaceTextを利用せず、検索文字を置換する様子

findAll()メソッドで検索条件に一致する全てのセルを返す場合は、以下記事を御覧ください。

参照記事:【GAS】スプレッドシートで検索条件に一致する全てのセルを返す

スプレッドシートで検索したテキストを置換するGAS

function sheetrfind(){
  //SpreadsheetAppを起動
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sht = ss.getSheets()[0];
  //見出し作成
  var text = [
    ["文字を","検索する","テスト"]
  ];
  sht.getRange("A1:C1")
      .setValues(text)
      .setFontWeight("bold").setFontSize(16);
 //繰返しテキストを変数へ格納
  var array1,array2,array3
    array1 = "Spread";
    array2 = "Sheet";
    array3 = ".BLUE";
 //変数を繰り返しA~D列の101行目まで入力
  for(let i=2;i<=101;i++){
    sht.getRange(i,1).setValue(array1);//101行目までarray1をセット
    sht.getRange(i,2).setValue(array2);//101行目までarray2をセット
    sht.getRange(i,3).setValue(array3);//101行目までarray3をセット
  }
 
 //変数txtへあいうえおを格納して適当な位置へ設置
     var txt = "検索文字";
      sht.getRange(5,3).setValue(txt);
 //YESNOでテキスト検索するか確認
 var yesno = Browser.msgBox("検索テキスト"+txt+"を任意の文字へ置き換えますか?",Browser.Buttons.YES_NO);
 if( yesno == "yes"){
    //createTextFinderで文字を検索
    var txtfind = ss.createTextFinder(txt);
    //findNextで検索結果を取得する
    var rngs = txtfind.findNext();
    //actrngへA1形式で値を取得
    var actrng = rngs.getA1Notation();
    var retxt = Browser.inputBox("置き換える文言を入力してください");
    var retxt = String(retxt);
    //---注意!!---
      //■replaceWith(replaceText)で検索セル値を置換する(220707:replaceWithが効かない)
      // rngs.replaceWith(retxt);
   //---ここまで--- 
    //setValue()で代わりに文字retxtを代入する
    sht.getRange(actrng)
    .setValue(retxt)
    .setBackground("yellow");
  //メッセージで掲載
    Browser.msgBox("「"+actrng+"」セルのテキスト「"+txt+"」を「"+retxt+"」へ置き換えました");
  } else {
    // キャンセルした旨を掲載
    Browser.msgBox("検索はキャンセルしました");
  }
}
function retxt0(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Creates  a text finder.
var textFinder = ss.createTextFinder('dog');
// Returns the first occurrence of 'dog' in the spreadsheet.
var textfind = textFinder.findNext();
// Replaces the last found occurrence of 'dog' with 'cat' and returns the number
// of occurrences replaced.
var val = textfind.replaceWith('cat');
Logger.log(val);
}

replaceWith(replaceText)のパラメーター

名前タイプ説明
replaceTextString現在一致しているセルのコンテンツを置き換えるテキスト。
replaceWith(replaceText)のパラメーター

replaceWith(replaceText)の戻り値

Integer—置き換えられたオカレンスの数。

スプレッドシートで検索したテキストを置換するまとめ

GAS×スプレッドシートで検索したテキストを置換するならreplaceWith(replaceText)メソッドを利用しましょう

利用せず、setValue()でテキストを置換すると確実です。

関連記事:【GAS】スプレッドシート内で検索を行う

関連記事:【GAS】スプレッドシートのUIに関数メニューを追加する

関連記事:【GAS】スプレッドシートに名前とインデックスを指定した新規シートを挿入する

関連記事:【GAS】スプレッドシートで指定した名前で新規シートを作成する

関連記事:【GAS】スプレッドシートのグリッド線を非表示にする

-シートを操作する