質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

5831閲覧

Googleスプレッドシートで特定の列がある値になったらメールで通知したい

C.Nishimura

総合スコア13

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/30 04:25

編集2018/10/30 09:23

前提・実現したいこと

Googleスプレッドシートで、
特定の列が「対応済み」に変更されたら、メールで通知したい。

ある依頼をGooleフォームから受け付ける仕組みをとっています。
そのGoogleフォームで入力された値が格納されるGoogleスプレッドシートがあります。
そのシートのある列に、フォームから入力された依頼が対応されたら、
手動で「対応済み」という値を入力します。
その「対応済み」という値に変わったのをトリガーに、
指定のメールアドレス宛に変更された通知を送るようにしたいです。
Google Apps Scriptでの記述方法を教えていただけないでしょうか。
知識が少なく申し訳ないのですが、ゼロから記述いただけますと幸いです。

試したこと

https://teratail.com/questions/65372
上記のご質問にも似ているのですが、slackではなく、メール通知にしたいです。
また、
https://qiita.com/3mc/items/b78cbb4c2eebf06d26a0
これにも似ているのですが、トリガーの設定のせいか、
全く同じスプリプトを入れて(配信先のメールなどだけ調整して)もうまくメールが飛びませんでした。

補足

通知メールの内容は、スプレッドシートの下記の値を使いたいです。
A列:タイムスタンプ(フォームからの依頼日時)
C列:依頼者名
S列:「対応済み」という項目を入れる列
メール文面
「A(フォームからの依頼日時)にCさんから依頼の案件が対応済みになりました」

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice142

2018/10/30 04:34

qiita記事の「うまくいきませんでした」は何がうまくいかなかったのでしょう?なるべく具体的に書いていただけると回答を得やすいです。
papinianus

2018/10/30 05:22 編集

2点。ゼロから書いてくれという意味ですか?任意のメールアドレス宛とのことですが、任意のものをプログラムが推測で埋めることはできません。事前に決めた特定のアドレスで良いですか?←両方yesで回答しました
C.Nishimura

2018/10/30 09:16

>dice142 さま 不明瞭で失礼いたしました。qiita記事のそのままで使ってみたのですが、トリガーなどの設定が不備だったのか、メールが通知が全く送られてきませんでした。
C.Nishimura

2018/10/30 09:17

>papinianus さま 回答ありがとうございました。書き方が不明瞭で失礼いたしました、ご指摘のとおり、両方yesで相違ございません。
dice142

2018/10/30 09:26

Logger.logでログ確認して、まず関数自体が呼ばれているのかを確認し、呼ばれているのであればメール通知のコード直前はどうかなど確認してください。
guest

回答1

0

ベストアンサー

権限の都合がありますので、トリガーを設定してください。
(トリガーの設定方法は調べてください。設定値は、onEdit、スプレッドシートから、編集時、の3つです
(分かるとは思いますが「フォームの回答」とか、宛先のアドレスとかはお使いの環境にあわせてください

javascript

1function onEdit(e) { 2 const workingSheet = e.range.getSheet(); 3 if(workingSheet.getSheetName() !== "フォームの回答" || e.value !== "対応済み") {return;} 4 const formValue = workingSheet.getRange(e.range.getRow(), 1, 1, 3).getValues()[0]; 5 MailApp.sendEmail({to:"someone@example.com" , subject:"依頼者("+formValue[2]+")", body:"依頼時刻("+formValue[0]+")\n対応済み" }); 6}

投稿2018/10/30 05:21

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

C.Nishimura

2018/10/30 09:22

説明不明瞭の中、ありがとうございます。 いただいたscriptで無事、やりたかったことを実装できました。 ありがとうございました。
papinianus

2018/10/30 10:12 編集

他の質問者様に比べて不明瞭ということはないです。が、2つお願いがあります。 ・参照資料はすべてリンクにしてください、Qiitaは気づきませんでした。 ・そのQiita記事は参考にしないでください。 解決してよかったです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問