トライアル＆エラーが大事！ 🙏コード知識ゼロでもChatGPTでできる！メール自動送信プログラム 💡

### 始まりはメールから
私の仕事の始まりはメールのチェックから始まります。
いつもと変わらずメールをチェックしていると、取引先様からこんなメールが。
![青と緑 陽気な葉 引用 Facebookカバー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/8d6fef40-d2a9-2455-4a94-e1606cf542da.jpeg)
### 実は・・・
以前から問題にはなっていて、その時は予定日の二・三日に電話でご案内をしていました。
しかし、かけるタイミングが色々な事情で難しかったり自分がうっかり忘れていたり、電話連絡をしていてもお店と業者に食い違いがあったりとうまくいかず。
結局お電話の案内はやめ、業務連絡で発信するだけになっていました。
### 何とかしないと!
そして今回のメール✉。
さすがにこのままではマズイ💦何とかしないと・・・。
でも電話だとタイミングが難しいし、手間がかかるし。
う～～ん、やっぱりメール✉で連絡するのが一番いいかも。できれば店舗へ予定日の１週間前と２日前で件名と本文をそれぞれ変えてCcで共同作業している同僚にも自動でメール✉を送るシステムできないかな。
Glide？LINEBot？PowerAutomate？？
どれも違う気がする・・・・。
そこで以前研修でお世話になった先生に相談することに
### GASの勧め
そこで勧めていただいたのが **「Google Apps Script」** 通称（**GAS**）。
ここで**問題**が！
これってコードの知識がないとできないのでは💦
そうです。
GASはコードを作成し実行させる物。コード知識０の私にはかなり高い壁（というか絶壁）です。!

### ChatGPTとの会話は難しい
自分ではまだコードを書けない・・・そこで以前研修でも使った[ChatGPT](https://openai.com/chatgpt )でコードを作成をお任せできるという事を思い出しました。
ここからが長い戦いになりました。
まずはデータベースとなるスプレッドシートを作成。

そこからはChatGPTとの会話のキャッチボールのスタートです。
やりたいことは
![名称未設定のデザイン (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/ff9a5ed0-3357-75c4-4222-c505acde034b.png)

:::note info!
D列の日になったらG列の文を件名に張り付けてI列F列の文を本文に張り付ける。G列のアドレスをToに張り付けCCにH列とF列を張り付けてメールを送信する。
E列の日になったらE列の文を件名に張り付けてE列F列の文を本文に張り付ける。G列のアドレスをToに張り付けCCにH列とI列を張り付けてメールを送信する。
:::
やり方は
![ここに張り付けるで (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/ec9db546-c1dd-f11a-d064-8be04d664fc1.png)
だけ！
後は出てきたコードをGASに張り付けて実行してエラーが出ていたらまたそのエラー内容をChatGPTに入力してコードを書いてもらっての繰り返し。
![名称未設定のデザイン (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/f3d9cd7b-cd7f-f020-84bb-a7e4242f4e20.png)

![名称未設定のデザイン (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/25ec55d6-5dfc-5263-e904-a395dff02987.png)

それでもエラーが消えないときは質問の言葉を変えてまた同じことを繰り返しました。
![続く (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/582dd026-747a-0908-4fde-172cd6f5aad4.png)
### そして完成へ
そしてどうにか完成しました。
![名称未設定のデザイン (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/dd500efd-aca7-b266-1ffc-f68098ef8716.png)
![名称未設定のデザイン (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533975/a6c5d453-e7c3-a97e-bb9b-899044e6784b.png)

コードはこちら
```
function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
  var data = dataRange.getValues();
  var currentDate = new Date();

  for (var i = 0; i < data.length; i++) {
    // D列またはE列の日付を取得
    var dateD = new Date(data[i][3]);
    var dateE = new Date(data[i][4]);

    if (dateD.getFullYear() == currentDate.getFullYear() && dateD.getMonth() == currentDate.getMonth() && dateD.getDate() == currentDate.getDate()) {
      sendEmail(data[i][5], [data[i][11], data[i][12]], data[i][6], data[i][8], data[i][10]);
    }

    if (dateE.getFullYear() == currentDate.getFullYear() && dateE.getMonth() == currentDate.getMonth() && dateE.getDate() == currentDate.getDate()) {
      // 複数のCcアドレスを指定
      var ccAddresses = [data[i][11], data[i][12], /* さらに追加 */];
      sendEmail(data[i][5], ccAddresses, data[i][7], data[i][9], data[i][10]);
    }
  }
}

function sendEmail(to, cc, subject, body, columnK) {
  MailApp.sendEmail({
    to: to,
    cc: cc.join(','),
    subject: subject,
    body: body + '\n\n ' + columnK
  });
}

```
### ChatGPTの便利さから学んだこと
コード知識０でもChatGPTを使えば出てきたコードを張り付けるだけでできることがたくさんあるということを学びました。
但し一度で答えがぴったり出るわけではなく、何回も言葉を変え細かく会話を繰り返すことが必要。つまり**トライアル＆エラーが大事**であるということを学びました。
今後も失敗から学ぶことを続けていきたいです。
**人生トライアル＆エラー！！**