回答編集履歴

1

解説追加

2023/02/09 06:37

投稿

bebebe_
bebebe_

スコア504

test CHANGED
@@ -1,4 +1,5 @@
1
1
  やりたいこととしてはこういった感じではないでしょうか
2
+
2
3
  ```ここに言語を入力
3
4
  function NotificationMail(){
4
5
 
@@ -9,11 +10,28 @@
9
10
  const ss= SpreadsheetApp.openById('シートのIDを入力');// 現在のSpreadSheetを取得
10
11
  const mySheet = ss.getSheetByName('シート名を入力'); // シート(SpreadSheetの下のタブ名を指定
11
12
 
12
- var myCell = mySheet.getRange(2,9,mySheet.getLastRow()-1,1).getValues(); //I列を配列として取得
13
+ var myCell = mySheet.getRange(2,9,mySheet.getLastRow()-1,1).getValues(); //I列を配列として取得 B列なら9→2
13
-
14
+ //console.log(myCell.flat()) //配列確認用
14
15
  if(myCell.flat().includes('残り3営業日')){ //配列内に[残り3営業日]があるか判定
15
16
 
16
17
  GmailApp.sendEmail(recipient, subject, body, options);//通知メールを送信
17
18
  }
18
19
  }
19
20
  ```
21
+ ```ここに言語を入力
22
+ SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名を入力").activate();
23
+ ```
24
+ とりあえずシートをアクティブにする必要はなさそうなので省いています。
25
+ ```ここに言語を入力
26
+ var myCell = mySheet.getRange(2,9,mySheet.getLastRow()-1,1).getValues();
27
+ ```
28
+ getRange("I:I")までだとI列をRangeとして取得するので「.getValues()」で値を2次元配列にして取得します。
29
+ ("I:I")だと1000行分とかを取得するので「(2,9,mySheet.getLastRow()-1,1)」で
30
+ 2行目、9列目から最下の入力がある行までの1列を1列でも2次元配列で取得します。
31
+
32
+ ```ここに言語を入力
33
+ if(myCell.getValue()=='残り3営業日')
34
+ ```
35
+ .getValue()だと1個目(1行目)だけが「残り3営業日」か判定するだけになります。
36
+ 上の方で.getValues()で配列で取得してます。
37
+ flat()で2次元配列を1次元配列にして.includesを使うと配列中に「残り3営業日」があればTrueを返します。