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

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

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

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

Q&A

解決済

3回答

1535閲覧

[Google Apps Script] スプレッドシート未入力者に対して入力促進のメールを送りたい

tnoce_

総合スコア19

Google Apps Script

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

0グッド

1クリップ

投稿2018/11/01 11:32

前提・実現したいこと

・Google Apps Scriptでスプレッドシート未入力者へメールで催促したい

フリーアドレスのため、毎朝の席次表を入力していない人だけに、
入力催促のメールを送るスクリプトを作っているのですが、

「無効なメール: undefined(行 61、ファイル「コード」)表示しない」

と、メールアドレスに関するエラーが発生します。
下記にコードを記しますので、知見がある方御力添えいただけないでしょうか。

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

無効なメール: undefined(行 61、ファイル「コード」)表示しない

該当のソースコード

function GetValues(ss){

// シートを名前で指定
var sheet = ss.getSheetByName('GAS用');

// レンジの取得と値の表示
var n = 1;
for(;;){
var rangeA = ss.getRange("A" + n).getValue();
var rangeB = ss.getRange("B" + n).getValue();
var rangeC = ss.getRange("C" + n).getValue();

// セルが空白だった場合、処理をストップ
if(!rangeA){
break;
}else{
if(rangeA == '未入力'){
SendEmailforPeoplewhodoesnotInputCell(rangeA,rangeB,rangeC);
}
}
n++;
}

}

function SendEmailforPeoplewhodoesnotInputCell(rangeB,rangeC){
GmailApp.sendEmail(rangeB,
"件名",
"本文"
);

}

Google Apps Script``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

papinianus

2018/11/02 01:05 編集

61行もないのですが、エラーはどこですか?→読めばわかったけど
tnoce_

2018/11/02 01:15

コメントいただき、ありがとうございます。大変失礼いたしました。他のファンクションも含めていたにもかかわらず、一部だけ抜粋してしまったため、誤った行がでてしまいました。エラーはGmailApp.sendEmail(rangeB, の部分になります。
papinianus

2018/11/02 01:19 編集

追記ありがとうございます。が、多分macaron_xxxさんの回答で終わってます。縦方向で列が不揃い(A列には値があるのに、B列(メールアドレス)が空というパターンがあるなら私の回答も入れたほうがいいかもしれません。
guest

回答3

0

ベストアンサー

GAS

1if(rangeA == '未入力'){ 2SendEmailforPeoplewhodoesnotInputCell(rangeA,rangeB,rangeC); 3}

ここの第一引数がいらない。

正しくは

GAS

1if(rangeA == '未入力'){ 2SendEmailforPeoplewhodoesnotInputCell(rangeB,rangeC); 3}

投稿2018/11/02 00:58

macaron_xxx

総合スコア3191

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

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

0

皆さま、多くのコメントいただき誠にありがとうございます。

本件解決いたしました。
大変恥ずかしながら、関数の実行をfunction SendEmailforPeoplewhodoesnotInputCell(rangeB,rangeC){
で実行していたのと、ご指摘いただいた通り、不必要な引数が原因だったっぽいです。

GetValueの関数で実行したら、スプレッドシートのアドレスを無事読み取ってくれたので、
問題なく未入力者に対してだけ、メールが飛ぶようになりました。

投稿2018/11/02 01:22

編集2018/11/02 01:23
tnoce_

総合スコア19

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

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

0

こうかなあ

javascript

1function SendEmailforPeoplewhodoesnotInputCell(rangeB,rangeC){ 2if(rangeB) return; //これを入れる 3GmailApp.sendEmail(rangeB 4

投稿2018/11/02 00:28

papinianus

総合スコア12705

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

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

papinianus

2018/11/02 01:24

GmailのgasのAPIは、メールアドレスについては結構シビアに見てくるので、toやcc、fromは入力チェックをしたほうがいい(不要な,があるとエラーになった経験あり)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問