回答編集履歴

2

コード修正、画像追加

2023/02/13 23:00

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -4,7 +4,9 @@
4
4
  そしてメール送信はforの外に書きます。
5
5
 
6
6
  ## コード例
7
- forを使わない方が簡にできますので、以下の方法をご紹介します。
7
+ forを使わない方が簡にできますので、以下の方法をご紹介します。
8
+
9
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-02-14/69a8878b-f79f-43a4-bc19-6364fec60e6d.png)
8
10
  ```javascript
9
11
  function alertTasks() {
10
12
  const ss = SpreadsheetApp.getActiveSpreadsheet();
@@ -24,11 +26,11 @@
24
26
  const tasks = values.filter(record => {
25
27
  // 本日の年月日と使用期限の年月日が同じかどうか判定
26
28
  const isExpiredToday = date.getTime() === record[4].getTime();
27
- // 公開が「」かどうか判定
29
+ // 公開が「」かどうか判定
28
- const isPublished = record[5] === '';
30
+ const isNotPublished = record[5] === '';
29
31
 
30
32
  // どちらもtrueの場合、その行を新しい配列に入れる
31
- return isExpiredToday && isPublished;
33
+ return isExpiredToday && isNotPublished;
32
34
  });
33
35
 
34
36
  // 配列の長さが0なら、この関数をここで実行終了(メールを送らない)

1

誤字修正

2023/02/13 22:40

投稿

Cocode
Cocode

スコア2314

test CHANGED
@@ -1,6 +1,7 @@
1
1
  ## 不具合の原因
2
2
  for文の中で、1行ずつ条件に合致するたびにメールを送信する処理をしているからです。
3
3
  for文の中で本来すべきことは、条件に合致するかどうか判定し、合致する場合本文の文字列に加えるという処理です。
4
+ そしてメール送信はforの外に書きます。
4
5
 
5
6
  ## コード例
6
7
  forを使わない方が簡単にできますので、以下の方法をご紹介します。
@@ -30,7 +31,7 @@
30
31
  return isExpiredToday && isPublished;
31
32
  });
32
33
 
33
- // 入れるの長さが0なら、この関数をここで実行終了(メールを送らない)
34
+ // 配列の長さが0なら、この関数をここで実行終了(メールを送らない)
34
35
  if (tasks.length === 0) return;
35
36
 
36
37
  // 送信先のメールアドレス