「待ってたやつ、入ったよ！」フォルダに新規ファイル追加でメール通知！ChatGPT生成GASで作業効率化！

# はじめに

私は業務で **Google Drive** を良く使用します。
ファイルは報告や連絡など様々ですが、発注に使用される事もあります。
その中でも**スポット商品の発注は時間的拘束が強め**です。
仕様はスプレッドシートに欲しい商品の数量を〆切時間までに打ち込むというものです。
投函されるとバイヤーからメールが配信されますが、私個人に支給された仕事用のメールアドレスはありませんので、店舗のアドレスにメールが送信されます。
その為、投函されたかどうかはパソコンで店舗アカウントのメールを確認するかGoogle Driveを直接閲覧するしかありません。うっかり忘れてしまって**〆切を過ぎてしまった**り、限定数量があるものは早い者勝ちなので**発注を逃してしまう**事もあります。

そこで、**新規スプレッドシート**が指定フォルダに追加されたら
**私のスマホにメールで通知**する様にしたいです。
<img width="400" alt="新規ファイルメールGAS.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/2ff77df5-4e80-d86d-d3ee-62ab7154467f.png">



しかし、**私はコードが書けません…**
そんな時には<font color="red">****ChatGPTに書いてもらっちゃいましょう。****</font>



# 使用ツール
・Google Drive
・Google Apps Script（GAS）
・ChatGPT

# 作成方法
### ChatGPTでコードを作成
ChatGPTに下記のプロンプトを入力しました。

![スクリーンショット (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/4df9d7a4-537b-6504-f9d7-d9fd8d01cc04.png)


それに対するChatGPTが作成したコードはこちらです。

<details open><summary>ChatGPT作成コード</summary>

```diff_javascript
function notifyNewFile() {
  var folderId = "YOUR_FOLDER_ID"; // 監視したいフォルダのIDに置き換えてください
  var folder = DriveApp.getFolderById(folderId);
  var files = folder.getFiles();
  
  // 新しいファイルを記録するためのプロパティストア
  var properties = PropertiesService.getScriptProperties();
  var processedFiles = properties.getProperty('processedFiles');
  var processedFileIds = processedFiles ? processedFiles.split(",") : [];

  while (files.hasNext()) {
    var file = files.next();
    var fileId = file.getId();

    // ファイルIDがリストにない場合、新しいファイルとして認識し、メール送信
    if (processedFileIds.indexOf(fileId) === -1) {
      var emailAddress = "recipient@example.com"; // 送信先のメールアドレスに置き換えてください
      var subject = "新しいファイルが追加されました: " + file.getName();
      var message = "フォルダに新しいファイルが追加されました: " + file.getName() + "\nリンク: " + file.getUrl();
      
      // メール送信
      MailApp.sendEmail(emailAddress, subject, message);
      
      // ファイルIDをリストに追加
      processedFileIds.push(fileId);
    }
  }

  // 更新したファイルIDリストを保存
  properties.setProperty('processedFiles', processedFileIds.join(","));
}
```

</details>

### Google Drive フォルダ ID を確認
次は監視したいフォルダの ID を取得します。
<br>

:::note info
今回は実験導入の為、私のフォルダで設定します。
:::

<br>

指定のファイル（今回はマイドライブの「新しいファイルを入れるフォルダ」）を開き、
![スクリーンショット (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/3f341b7e-f5da-6191-15f3-7df9339ce6dc.png)
<br>
URLの中からフォルダ ID を取得します。

![スクリーンショット (33).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/d78e29d6-01ec-33b6-6a92-e3bd831360d7.png)

<br>

### Google Apps Script を作成
指定のファイル内の「+ New 」をクリックし、

![スクリーンショット (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/557363cb-c3e3-f582-2bd7-6006ab0c2591.png)
<br>
「 More 」の「 Google Apps Script 」を選択します。

![スクリーンショット (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/efe14f1f-ae3e-ff67-aa73-a024aa933260.png)
<br>
別のタグで Apps Script が立ち上がります。
プロジェクト名を任意の名前に変更します。
![スクリーンショット (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/628fd969-6ad9-fae0-484e-4022036d5f03.png)
<br>

### 設定変更
ChatGPTが作成したスクリプトを貼り付け、

`YOUR_FOLDER_ID` を先ほど取得した監視するフォルダのIDに変更します。
![スクリーンショット (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/fd789c2d-6dfa-9c47-9ea5-2aef9c1aaf62.png)

`emailAddress =` の後の `recipient@example.com`を
メールを受け取りたいアドレスに変更します。
![スクリーンショット (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/059d92bf-e397-1d86-3db2-e2672fae77d5.png)

Save project を押して保存し、Run でこの`notifyNewFile`関数を実行します。
![スクリーンショット (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/a4a1487d-4d2e-bf97-b977-f07bb8c4ae31.png)

Run を押した後に認証を求められます。
権限を確認しアカウントを選択すると注意喚起が出てきます。
下記の様に対応してください。
![スクリーンショット (45).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/cbed2d86-e852-2d3f-72ea-f5c45b29ea49.png)

メールが送信されました。
![スクリーンショット (47).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/eb3354dd-f69c-4a48-763c-e59e940305f9.png)

<br>

### トリガーの設定
左側にあるメニューから Triggers を選択します。
![スクリーンショット (49).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/c7510a59-e74f-32f6-c164-72af8e44d60d.png)

次画面で「create a new trigger」か「+ Add Trigger」を選択します。
![スクリーンショット (50).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/d496925e-6996-a7ec-1ee5-64b69f899d34.png)

イベントソースは時間駆動型を選択し、
「時間ベースのトリガーの種類を選択」は、分タイマーを選択します。
時間の間隔は毎分にしました。
保存を押して設定完了です。
![スクリーンショット (51).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/a6ec4cc7-51a8-953a-ce6c-529d97a213e9.png)
<br>
<br>
フォルダに新しいファイルを入れてみると…

![スクリーンショット (52).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/ba7beee7-1e8b-0465-34c3-2b35e990c4ed.png)

即座に通知メールが来ました。

![スクリーンショット (53).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/297bb251-41e3-d4da-7baf-4c097522e034.png)
<br>
<br>
## おまけ
ChatGPTを使用してスクリプトを作りましたが、その早さにびっくりです。
ChatGPTでもう一つぐらい何か作れないかと思い、ChatGPTで出来る事を検索していたら、「ゲームを作れる」という言葉が目に入ったのでブロック崩しゲームを作ってみました。

![スクリーンショット (54).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/62b91769-bd43-0ea3-5f1f-1ecc210900fc.png)

![スクリーンショット (62).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/67896ba8-c73c-b612-9662-eeae4d8ddd2c.png)

そんなに簡単に…１分程であっという間に完成です。
折角なので色々注文をつけてみました。

![スクリーンショット (61).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/0e72e577-7a27-8d23-0a69-19d5d869f0ed.png)

結果がこちらです。
![スクリーンショット (66).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885070/d74ab116-cba4-e943-8dd3-1f74f9d4d9fd.png)
修正もお手の物ですね…五分程度でこのクオリティは圧巻でした。


# 最後に
今回はコードを書けない私が、ChatGPTを活用してスクリプトを生成し、
GASを用いて作業効率化を試みました。これにより、わざわざパソコンで確認をする必要が無くなり、10分は効率化できたかと思います。
今回ChatGPTを利用してみて感じたことは、まるで超優秀な部下がササッと仕事をこなしてる様でした。ビジネスにおいても、プライベートにおいても、この「優秀な部下」を上手く使わない手は無いですね。必ず活用すべきだと思います。
これからもChatGPT活用方法を模索し、作業効率化に努めていきます。
最後まで読んでいただきありがとうございました。