はじめまして。
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);//通知メールを送信 } } } }
上記のメールの内容のところにどこのセルが変更されたかも通知が来るようにしたいのですが、そこだけはどうしてもわかりませんでした。
何か良い方法はございませんでしょうか。
コードがガラッと変わってしまっても構いませんので、何か良い方法をご存じの方がおられましたら、ご教示お願いいたします。
このスクリプトは、どのように実行されているのでしょうか?
つたない私の文章にご連絡いただきまして、ありがとうございます。
回答になっておりますか不安なのですが…。
このスクリプトをスプレッドシートの拡張機能→Apps Scriptから実行しております。
トリガーはスプレッドシートから変更時、です。
回答になっていますでしょうか…?
実際にこのコードを書いてから
C列に「中止」という文字が記入された時のみメールで通知が来るようになりました。
この時にメール本文にC列の中のどのセルが変更されたのかも取得できたらいいなと思い、
情報を探しているところです。
https://qiita.com/kaitaku/items/43ba886c63440a7cd77d
上記のサイトでコードの追加で対応できるのではないか…?という気がしております。
メール本文に「myCell.getRow」と「myCell.getColumn」の値があればならないですか?
ありがとうございます。
const body = 'myCell.getRow,myCell.getColumn';//メールの内容
ということでしょうか?
これでは届かなかったです。
記述しているのはアクティブセルの取得より下ですか?
'で囲むと文字列になるので
const body = myCell.getColumn() +','+ myCell.getRow()
のような感じで
ありがとうございます。
しかし、エラーが出てしまいます…。
コードは以下の通りにしています。
お手数おかけしてすみません。
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);//通知メールを送信
}
}
}
}
エラーは以下の通りです。
TypeError: Cannot read property 'getColumn' of undefined
わかりました!
解決しました!!
アクティブセルの取得より下に記述したらメールで通知されるようになりました。
本当にありがとうございますm(__)m
心より感謝申し上げます!
回答1件
あなたの回答
tips
プレビュー