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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

JavaServer Faces

JavaServer Faces(JSF)はJavaをベースとしたコンポーネントベースのwebアプリケーション開発用のフレームワークです。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

625閲覧

【GAS】スプレッドシートの特定の列に「中止」と入力された時のみメール送信でメール本文にセルの番地も表示したい

ayako.suzuking

総合スコア10

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

JavaServer Faces

JavaServer Faces(JSF)はJavaをベースとしたコンポーネントベースのwebアプリケーション開発用のフレームワークです。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2022/09/07 03:09

はじめまして。
GASに関しては完全な素人です。
業務で以下の作業を効率化したく、ネットで情報を集めています。

スプシの一つのシートの特定の列(ステータス)のどこかに「中止」という入力があった場合のみ、メールが届くようにしたいと思っています。
さらにメール本文内にセルの番地(どこのセルが変更されたのか)も書かれてあると大変便利だなと思っています。

ステータスの列に「中止」という文字が入力された場合にメールが届くようには設定できました。
使っているのは以下のコードになります。

function test(){ const subject = '中止依頼';//通知タイトル const body = 'メールの内容';//メールの内容 var recipient = '〇〇@gmail.com'; //通知を飛ばす先のgメールアドレス var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var mySheetName= mySheet.getSheetName(); //シート名を取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 var myCol = myCell.getColumn() var myCellValue = myCell.getValue(); if(mySheetName == '2022年6月〜'){ //変更されたのが特定シートなら if(myCol == 3){ //変更されたのがC列なら if(myCellValue.indexOf('中止') > -1){ //中止という文字列が含まれていた場合 GmailApp.sendEmail(recipient, subject, body);//通知メールを送信 } } } }

上記のメールの内容のところにどこのセルが変更されたかも通知が来るようにしたいのですが、そこだけはどうしてもわかりませんでした。
何か良い方法はございませんでしょうか。
コードがガラッと変わってしまっても構いませんので、何か良い方法をご存じの方がおられましたら、ご教示お願いいたします。

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

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

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

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

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

CHERRY

2022/09/08 00:43

このスクリプトは、どのように実行されているのでしょうか?
ayako.suzuking

2022/09/08 07:16

つたない私の文章にご連絡いただきまして、ありがとうございます。 回答になっておりますか不安なのですが…。 このスクリプトをスプレッドシートの拡張機能→Apps Scriptから実行しております。 トリガーはスプレッドシートから変更時、です。 回答になっていますでしょうか…? 実際にこのコードを書いてから C列に「中止」という文字が記入された時のみメールで通知が来るようになりました。 この時にメール本文にC列の中のどのセルが変更されたのかも取得できたらいいなと思い、 情報を探しているところです。 https://qiita.com/kaitaku/items/43ba886c63440a7cd77d 上記のサイトでコードの追加で対応できるのではないか…?という気がしております。
bebebe_

2022/09/09 08:11

メール本文に「myCell.getRow」と「myCell.getColumn」の値があればならないですか?
ayako.suzuking

2022/09/09 09:18

ありがとうございます。 const body = 'myCell.getRow,myCell.getColumn';//メールの内容 ということでしょうか? これでは届かなかったです。
bebebe_

2022/09/12 00:28 編集

記述しているのはアクティブセルの取得より下ですか? 'で囲むと文字列になるので const body = myCell.getColumn() +','+ myCell.getRow() のような感じで
ayako.suzuking

2022/09/12 11:34 編集

ありがとうございます。 しかし、エラーが出てしまいます…。 コードは以下の通りにしています。 お手数おかけしてすみません。 function test(){ const subject = '中止依頼';//通知タイトル const body = myCell.getColumn() +','+ myCell.getRow() var recipient = '〇〇@gmail.com'; //通知を飛ばす先のgメールアドレス var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var mySheetName= mySheet.getSheetName(); //シート名を取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 var myCol = myCell.getColumn() var myCellValue = myCell.getValue(); if(mySheetName == '2022年6月〜'){ //変更されたのが特定シートなら if(myCol == 3){ //変更されたのがC列なら if(myCellValue.indexOf('中止') > -1){ //中止という文字列が含まれていた場合 GmailApp.sendEmail(recipient, subject, body);//通知メールを送信 } } } }
ayako.suzuking

2022/09/12 11:37

エラーは以下の通りです。 TypeError: Cannot read property 'getColumn' of undefined
ayako.suzuking

2022/09/12 12:27

わかりました! 解決しました!! アクティブセルの取得より下に記述したらメールで通知されるようになりました。 本当にありがとうございますm(__)m 心より感謝申し上げます!
guest

回答1

0

自己解決

bebebe_さんのおかげで解決しました。
ご尽力いただき、本当にありがとうございました。
以下、コードになります。

function test(){ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var mySheetName= mySheet.getSheetName(); //シート名を取得 var myCell = mySheet.getActiveCell(); //アクティブセルを取得 var myCol = myCell.getColumn() var myCellValue = myCell.getValue(); const subject = '中止依頼';//通知タイトル const body = myCell.getColumn() +','+ myCell.getRow();//メールの内容 var recipient = '〇〇@gmail.com'; //通知を飛ばす先のgメールアドレス if(mySheetName == '2022年6月〜'){ //変更されたのが特定シートなら if(myCol == 3){ //変更されたのがC列なら if(myCellValue.indexOf('中止') > -1){ //中止という文字列が含まれていた場合 GmailApp.sendEmail(recipient, subject, body);//通知メールを送信 } } } }

投稿2022/09/12 12:37

編集2022/09/12 12:42
ayako.suzuking

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問