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

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

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

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

Google Apps Script

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

12476閲覧

GASのエラー「Exception: パラメータ(String,String,String)が Utilities.formatDate のメソッドのシグネチャと一致しません」の解決方法を教えて下さい

RKJ

総合スコア1

Google スプレッドシート

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

Google Apps Script

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

1クリップ

投稿2022/01/06 08:04

前提・実現したいこと

スプレッドシートで期日アラートメールを送信するシステムを作っています。
全くの初心者でwebからソースコードをコピーし、必要な箇所を書き換えて使用しており、
以下のエラーメッセージが発生しました。

ただ、コードを手動で実行すると、期日が過ぎた項目が正常にメールで届くのは届いているのです。

GASの本などで調べてみたのですが、基本的な事を分かっていない状態です。
期日が過ぎた時にアラートメールが届き、エラーを解決したいです。
解決方法をご教授願えませんでしょうか。

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

以下が設定したgoogleアカウントに届くエラーメッセージです。

イメージ説明

該当のソースコード

function mailAlerts() {
//シートを取得
var bk = SpreadsheetApp.getActiveSpreadsheet();
var sh = bk.getActiveSheet();

var last_row = sh.getLastRow(); //最後の行を取得(繰り返し処理の回数)
var begin_row = 2; // 処理を開始する行 (1行目は項目名なので2から)

//今日の日付を取得し文字列を成型する
var today = new Date();  
var formatDate = Utilities.formatDate(today,"JST","yyyy/MM/dd");

//繰り返し処理(1行づつ処理し、行の数だけ繰り返す)
for(var i = begin_row; i <= last_row; i++) {
//それぞれのセルの中身を取得していく
//通知期日(日付は成型する)
var sell1 = "B"+i;
var value1 = sh.getRange(sell1).getValue();
var value1 = Utilities.formatDate(value1,"JST","yyyy/MM/dd");
//進捗状況
var sell2 = "C"+i;
var value2 = sh.getRange(sell2).getValue();
//施設名
var sell3 = "D"+i;
var value3 = sh.getRange(sell3).getValue();
//定期メンテナンス内容
var sell5 = "F"+i;
var value5 = sh.getRange(sell5).getValue();
//実施日
var sell6 = "H"+i;
var value6 = sh.getRange(sell6).getValue();

  //もし、今日の日付と納期が同じで、なおかつ状況が完了でない場合メールを送る
if(formatDate == value1 && value3 !== "完了"){
GmailApp.sendEmail('※ここにはメールアドレスを入力しています',
'【定期メンテ通知】施設名:' + value2 + '/' + value5,
'■施設名:' + value3 + '\n■定期メンテナンス内容:'+ value5 + '\n■実施日:'+ value6);
}
}

}

試したこと

webで調べたところ、(String,String,String)のエラーは文字が間違っているかと思い、

var formatDate = Utilities.formatDate(today,"JST","yyyy/MM/dd");

の箇所のtodayの後ろに空白が入っていたので削除しました。
ただ、削除する際に半角か全角かは確認しませんでした・・・

しかし、解決せずエラーになります。

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

MacでGASを入力しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

手動ではうまくいくが、時間トリガーだとエラーになるってことでしょうか?

たぶんシートの指定で

var sh = bk.getActiveSheet();

と記述されてますが、時間トリガーでは他のシート(1枚目のシート)を参照しているのでは?

シート名からシートを指定するように変更してみてください。

https://gsuiteguide.jp/sheets/getsheetbyname-name/

投稿2022/01/06 08:49

sawa

総合スコア3002

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

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

RKJ

2022/01/11 00:27

sawa様 お返事遅くなり申し訳ありません。 アドバイスいただいたようにシートを指定してみましたら、トリガーのエラーが解消しました。 ありがとうございました!! 1歩1歩頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問