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

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

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

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

解決済

Googleスプレッドシートで特定のシt-トの特定の列に特定の文字列が入力されたらメールで通知したい

Toyo32
Toyo32

総合スコア3

Google Apps Script

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

2回答

0評価

0クリップ

494閲覧

投稿2022/06/02 02:42

前提

Googleスプレッドシートで、
特定のシートの特定の列に特定の文字列が入力されたら、メールで通知したい。

実現したいこと

ある回答をGooleフォームから受け付け、フォームで入力された値をGoogleスプレッドシートに表示させています。
1つのスプレッドシートの内にシートが3つあり、この3つ目のシート、シート名【Googleフォーム回答】のC列に特定の値「参加者」が入力されたら、指定のメールアドレスに通知したいです。

以前、同じような質問をさせていただきましたが、シートが3つに増えてしまい、3つとも同じ形式をとっているため、1つ目、2つ目のシートに回答があった際も通知のメールが飛んでしまうようになってしまいました。

Google Apps Scriptでの記述方法を教えていただけないでしょうか。

発生している問題・エラーメッセージ

下記のソースコードではメールが飛ばなくなってしまいました。

該当のソースコード

function notification(){ const recipient = 'sample@hgu.jp'; //通知を飛ばす先のgメールアドレス const subject = 'Googleフォーム新規回答あり';//通知タイトル const body = 'https://docs.google.com/spreadsheets/sample';//確認するシートのURL var ss = SpreadsheetApp.getActiveSpreadsheet(); // 現在アクティブなスプレッドシートを取得 var sheet = ss.getSheets()[2]; // そのスプレッドシートにある3つめのシートを取得 var cell = sheet.getActiveCell(); // そのシートにあるアクティブなセルを取得 if(myCell.getColumn()==3 && myCell.getValue()=="参加者"){ //C列に参加者と入力があったか判定 GmailApp.sendEmail(recipient, subject, body);//通知メールを送信 } }

試したこと

var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
var myCell = mySheet.getActiveCell(); //アクティブセルを取得

入力のあったシートから情報を取得するという上記ソースコードから
特定のシートを指定するソースコードを追加しました。

エラー表示はないですが、メールが送信されなくなりました。
シートの指定方法が良くないのだと思いますが、どこが間違っているのかわかりません。

ご教授いただけないでしょうか。

補足情報(FW/ツールのバージョンなど)

今後、シートの数が増える可能性もあるので、できればシート名を指定する方法を教えていただきたいです。
どうぞよろしくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

k.a_teratail

2022/06/02 04:16

> if(myCell.getColumn()==3 && myCell.getValue()=="参加者") こちらの「myCell」という変数はどこに定義しているのでしょうか? 未定義の変数に対して、メソッドを実行しようとしてもエラーになります。 もしかして、ソースコードは一部抜粋なのでしょうか?
Toyo32

2022/06/02 04:49

>k.a_teratail 様 ソースコードはこれで全部です。 元々、スプレッドシートのシートが1つだったので、そのシートのC列に「参加者」が入力されたらメールで通知をするためのソースコードとして、 function notification(){ const recipient = 'sample@gmail.com'; //通知を飛ばす先のgメールアドレス const subject = '新規入力あり';//通知タイトル const body = ''https://docs.google.com/spreadsheets/d/samplxxxxxxxx';//確認するシートのURL var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 if(myCell.getColumn()==3){ //C列に入力があったか判定 GmailApp.sendEmail(recipient, subject, body);//通知メールを送信 } } 上記コードを教えていただきました。 今回はそのスプレッドシートにシートが追加されたため、入力があったら通知するシートを指定してメールを送信したかったのですが、シートを指定するコードを入れても、メールが飛ばなくなってしまいました。 この場合、Cセルに「参加者」が入力されたらというコードはどのように書き換えたらよいのでしょうか?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

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