回答編集履歴
1
解説追加
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を返します。
|