【GAS30】指定した文字列をすべて置換する方法 replace

基礎講座

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回の動画

【GAS】ワンクリックで今日の日付に移動する方法(Gスプレッドシート)
GASでテキストの検索方法がわかります。 一つのセルで1年分の日付を表示させることができます。

今回は、とっても価値の高い方法をお伝えします。

これを知ることであなたは、

  • 文字列の置換を文章全体に対して行えるようになります。
  • Googleフォーム登録時の自動返信メールに複数回、登録者の名前を表示させることができるようになります。


逆に、知らないと

GAS内でreplace関数を使っても

あなた:「あれ? 先頭しか置換されていない」

って、事になってしまいます。

これは、実際に私に起ったことです。

「【初心者向け】Googleフォームでいきなり返信メールを送れるようになる方法」

を見ながら実際に、自分自身のフォームの設定をしました。

でも、残念ながら%name%が置換されずに送信されてしまうのです。

ひろし:「えええーーー、あかんやん」

というわけで、重い腰を起こし、修正作業に取り組みました。

では、動画をご覧ください。

【GAS30】指定した文字列をすべて置換する方法 replace

 

スクリプトはこちらです。

※確認は、Console.logで行ってください。

//★スプレッドシートのID URLのユニークな長い部分
const FORMAT_SHEET_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

//★設定項目が記載してあるシートの名称
const FORMAT_SHEET_NAME = "返信メールフォーマット"


function test() {

  let message = '';
  let username = '';

  const ss = SpreadsheetApp.openById(FORMAT_SHEET_ID)
  const sheet = ss.getSheetByName(FORMAT_SHEET_NAME)

  //スプレッドシートから設定内容を取得する
  let SendInfobuf = sheet.getRange(1, 1, 11, 3).getValues()

  const Cchk = 0  //チェックボックスの値の位置
  const Clmv = 2  //項目の値の位置

  const Lsubject = 0    // 件名
  const Lcontents = 1   // 本文
  const Lfromadder = 2  // 送信元メールアドレス
  const Lfromname = 3   // 送信元名前
  const Latendmadder = 4  // 通知先メールアドレス
  const Latendsubject = 5 // 通知先への件名
  const Latendcontents = 6 // 通知先への本文
  const Lmailaddercaption = 9 // フォーム上のメールアドレスのキャプション
  const Lnamecaption = 10 //フォーム上の名前のキャプション

  //フォーム内の名称
  const ITEM_MAILADDRESS = SendInfobuf[Lmailaddercaption][Clmv]//メールアドレス"
  const ITEM_NAME_TITLE = SendInfobuf[Lnamecaption][Clmv]//お名前(ニックネーム可)


  username = "ひろし君"

  //返信メールの作成
  let subject = SendInfobuf[Lsubject][Clmv]//件名の取得
  let contents = SendInfobuf[Lcontents][Clmv] //本文の取得


  let result = contents //初期値を代入

  do {

    contents = result //結果を代入
    result = contents.replace("%name%", username);//%name%を置換する

    console.log(result)
  } while (result !== contents)

}

 

マインドセットします。

マインドセット
ちょっとガンバれば修正できる
これは、私自身に言っているのですが、
ぶっちゃけ、GASの修正は面倒くさいです。

 

一旦、始めてしまえば、なんてこと無いのですが
やるまでにちょっと時間がかかります。

 

正直、ブログに書こうと思わなければ、まだ
修正していないと思います。

 

ようは、一歩踏み出せば、できちゃうってことです。

では、今回のGoogleシートマスターへの究極の方法です。

Step1.
GASの画面を開く

Step2.

コピペしてデバッグできるロジックに変更する

Step3.

Console.log()を組み込む

Step4.

replace()関数を試してみる

では、早速GASの画面を開いてください。
今すぐです。

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS】手軽にシート名を取得する方法 GETSHEETNAME (Gスプレッドシート)
残念ながら、スプレッドシートでは、 CELL関数で"filename"がサポートされていません。 なのでスプレッドシートは、GASを使用しないと シート名を取得する事ができないのです。

 

コメント

タイトルとURLをコピーしました