0
0

[Google Sheets API] テキストを検索&置換する

Last updated at Posted at 2024-02-25

Google Sheets API v4(Java)を使用して、
スプレットシート内のテキストを検索し、そのテキストを置換する方法
についてご紹介します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する
を参照ください。

//例:
requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定

その他のGoogle Sheets APIは、下記の記事を参照ください。
⧉[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた

No 目次
1 検索&置換対象が全てのシート、またはシート指定
2 検索&置換対象が指定したシートの指定した範囲のみ

1. 検索&置換対象が全てのシート、またはシート指定

検索&置換の対象を全てのシートか、指定したシートのみにします。

検索オプションとして以下の指定が使えます。
  ・大文字、小文字を区別するか?
  ・検索値がセル全体と一致しているか?
  ・検索値が正規表現か?
  ・検索に数式を含めるか?

サンプル コード
シートを指定しない場合、findReplace(null)で呼び出してください。

public Request findReplace(String sheetId) {
    Request request = new Request();

    FindReplaceRequest r = new FindReplaceRequest();
    r.setFind("2024年");          //検索する文字列
    r.setReplacement("XXXX年");   //置換する文字列
    
        if (sheetId != null) {
        r.setSheetId(sheetId);    //シートを指定する場合
	} else {
         r.setAllSheets(true);    //全てのシートの場合
	}
    
    //r.setMatchCase(true);	       //大文字と小文字を区別する場合
    //r.setMatchEntireCell(true);  //検索値がセル全体と一致する必要がある場合
    //r.setSearchByRegex(true);	   //検索値が正規表現の場合
    //r.setIncludeFormulas(true);  //検索に数式を含むセルを含める場合

    request.setFindReplace(r);
    return request;
}

実行結果
これが、

全部置換されました。

2. 検索&置換対象が指定したシートの指定した範囲のみ

検索&置換の対象を指定したシート、範囲のみにします。
指定できる検索オプションは全てのシートを指定した場合と同じです。

サンプル コード

public static Request findReplace(Integer sheetId) {
    Request request = new Request();

    FindReplaceRequest r = new FindReplaceRequest();
    r.setFind("2024年");            //検索する文字列
    r.setReplacement("XXXX年");     //置換する文字列
    //r.setMatchCase(true);	        //大文字と小文字を区別する場合
    //r.setMatchEntireCell(true);	//検索値がセル全体と一致する必要がある場合
    //r.setSearchByRegex(true);	    //検索値が正規表現の場合
    //r.setIncludeFormulas(true);	//検索に数式を含むセルを含める場合
    
    GridRange range = new GridRange();	//検索&置換の範囲
    range.setSheetId(sheetId);		    //設定するシートID
    range.setStartRowIndex(0);		    //開始行(0スタート)
    range.setEndRowIndex(2);		    //終了行(0スタート)
    range.setStartColumnIndex(0);	    //開始列(0スタート)
    range.setEndColumnIndex(1);	        //終了列(0スタート)
    r.setRange(range);				    //範囲を設定

    request.setFindReplace(r);
    return request;
}

実行結果
これが、

指定の範囲のみ置換されました。

おしまい。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0