見出し画像

条件に合う人だけGメールの下書きを作る【GAS🎨】

こんにちは!
パソコンインストラクター歴12年の
チサです。(*´∀`)

今日は
先日、鰹塾🐟(GASの塾です)で
教えてもらったばかりの
GAS🎨の復習をします。

塾長の
出戻りガツオ🐟さんのnoteはこちら👇

鰹塾🐟で
いつも楽しくお勉強させてもらってて

最近は
自力で書いてみよう❣️と思えるくらい
GAS🎨に対して苦手意識がなくなってきて
めっちゃうれしいです!
ヽ(´▽`)/

塾長🐟
いつもありがとうございます😊
(*ᴗˬᴗ)⁾⁾⁾

さてさて!
今日はどんなことをやるのかというと。。

条件に合う人だけ
Gメールの下書きを作る!

っていうことを
したいと思います‼️

具体的に
やりたいのはこんなこと

こんなスプレッドシートがあるとして👇

名簿シート

この名簿の
🍓クラスの人だけに📩を送りたい。
(今回の場合だと
チサちゃん、ひろくん、ミワちゃんの3名)

メールの
件名と本文は
このひな形を使います👇

ひな形シート

A1セル…件名
A2セル…本文

本文の
★名前★ の部分は
実際のお名前に置き換えたい!
( ゚ー゚)ウ ( 。_。)ン

こんな感じ👇

こんなことを
やってみたいと思います!
(о´∀`о)


で!
さっそくだけど
完成したコードはこちら👇

function mailSitagaki() {
  // 名簿データの取得
  const shData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("名簿");
  const values = shData.getDataRange().getValues();

  //メールのひな形取得
  const shHina = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ひな形");
  const title = shHina.getRange('A1').getValue();


  for (let value of values) {
    // 🍓組の人だけメールの下書きを作る
    if (value[2] == '🍓') {
      let body = shHina.getRange('A2').getValue();
      //bodyの名前の部分を置換 
      body = body.replace(/★名前★/g, value[1]);

      GmailApp.createDraft(value[3], title, body);
    }
  }
}


書く上で工夫したのは
次の2点!

❶ For文の作り方
❷ replace関数を使った複数置換


詳しく説明しますね!

❶ For文の作り方

先日、
同じ鰹塾🐟の塾生の
aliceさんのツイートを見て


新たな✨For文の書き方を知り👇

早速
マネをさせていただきました!😁

いつもなら
こんな風に書くところを👇

  for (let i = 0; i < values.length; i++) {
    if (values[i][2]=='🍓'){
      // 処理
    }
  }

こんな感じに
短く!すっきり書けた!👇

  for (let value of values) {
    if (value[2] == '🍓') {
      // 処理
    }
  }

こんなふうに書くと

values(二次元配列)から
value(一次元配列)を
繰り返し取り出せる🎵

配列って何⁉𖦹 ̫ 𖦹
って方はこちらも参考に👇


で!
ためしにこんなコードを書いて
valueには
一体、何が入っているのか?
確認してみると👇

  for (let value of values) {
    console.log(value)
  }

👆これを実行すると…👇

valueの中身は一次元配列!
( 'ω' و)و"イイネ!!

今回は
一次元配列にしても
問題なさげなので!

見た目もスッキリな✨
こちらの書き方で書いてみました。

aliceさん♪ありがとう😊

❷ replace関数で複数置換

あとはもう一つ工夫したのは
replace関数を使うところ。

今回は
メールの2箇所
置き換えしたいところがあるんですが。。

★名前★のところ
2箇所を置き換えたい!


普通にreplace関数を使うと
こう書くんですが👇

 

replace('置換したい文字','置換後の文字' )

これだと
最初の一つだけしか
置き換えてくれないんです💦
:( ;´꒳`;):ヒエッ

こんな感じ👇

2つ目の★名前★
放置されてる…
😱

そんなわけで
なんとかならないか?
あれこれググっていたら

replace(/置換したい文字/g,'置換後の文字' )

置き換えたい文字を
/(スラッシュ)でくくって
後ろに g をつける

こんな風に書くと
置換たい文字が何個あっても
ちゃんと全部置き換えしてくれるらしい🌈
ヽ( ´∀`)スバラシイ

で!
出来上がったのがこちら

function mailSitagaki() {
  // 名簿データの取得
  const shData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("名簿");
  const values = shData.getDataRange().getValues();

  //メールのひな形取得
  const shHina = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ひな形");
  const title = shHina.getRange('A1').getValue();


  for (let value of values) {
    // 🍓組の人だけメールの下書きを作る
    if (value[2] == '🍓') {
      let body = shHina.getRange('A2').getValue();
      //bodyの名前の部分を置換 
      body = body.replace('★名前★', value[1]);

      GmailApp.createDraft(value[3], title, body);
    }
  }
}


これを
実行すると…

ちゃんと
下書きができ上がってる!!
(*´▽`*)


いろいろ試行錯誤しながら
GAS🎨書くの
楽しかったです。

実務でもGmailは使うので
お仕事で使えるコードも
書いてみようと思います!
(* ॑꒳ ॑* )⋆*ワクワク

ではでは
またあした!
(´꒳`)/

新刊出版しました👇
Wordショートカット力試しドリル

あなたはショートカットだけで
どこまでやれる?
|д゚)チラ
この📕で修行すれば
マウスのドラッグ操作から解放されますよ✨
ヾ(o´∀`o)ノワァーィ♪

➊パソコンに関する📕 4冊

➋Kindle出版に関する📕 2冊

➌節約に関する📕 1冊


➍読書に関する📕 1冊

➎海外の方向けの📕 3冊


気になる本があれば
試し読みだけでも♪
(´▽`)

この記事が気に入ったらサポートをしてみませんか?