回答編集履歴

1

コード追加

2022/05/16 10:24

投稿

k.a_teratail
k.a_teratail

スコア845

test CHANGED
@@ -16,3 +16,75 @@
16
16
  メールを送る
17
17
  }
18
18
  ```
19
+
20
+ ----
21
+
22
+
23
+ コード
24
+ ```gs
25
+ var MAIL_ADDRESS3 = ["XXX"];
26
+ function SUMMARY_Trend() {
27
+ var ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId());
28
+ var sheet = ss.getSheetByName("XXX"); // シートの名前
29
+
30
+ // 進捗が100%以外のタスクのIndexを取得
31
+ var index = getHeadIndex(sheet, "Less than a Week");
32
+ var range = sheet.getRange("a1");
33
+ var items = [];
34
+ for (i = 0; i < sheet.getLastRow(); i++) {
35
+ if (range.offset(i, index).getValue() != "完了") {
36
+ items.push(i);
37
+ }
38
+ }
39
+ var style = " style='border:1px #000000 solid;border-collapse:collapse;'";
40
+ var tableList = [];
41
+ tableList.push("<p> test</p>");
42
+
43
+ //データを取得し、HTMLのテーブルを作成。
44
+ tableList.push("<table" + style + ">");
45
+ for (i = 0; i < items.length; i++) {
46
+ // iは行のIndex
47
+ var study = [];
48
+ for (j = 0; j < sheet.getLastColumn(); j++) {
49
+ // jは列のIndex
50
+ var value = range.offset(items[i], j).getValue();
51
+
52
+ if (Object.prototype.toString.call(value) == "[object Date]") {
53
+ value = formatDate(value);
54
+ } else {
55
+ value = value.toString().replace("\n", "<br/>");
56
+ }
57
+ study.push(value);
58
+ }
59
+ tableList.push("<tr" + style + "><td" + style + ">" + study.join("</td><td" + style + ">") + "</td></tr>");
60
+ }
61
+ tableList.push("</table>");
62
+ //If分でNAの場合メールを送らない
63
+ if (sheet.getRange("A2").getValue() === '#N/A') {
64
+ return false;
65
+ } else {
66
+ GmailApp.sendEmail(MAIL_ADDRESS3, "test", "body", { htmlBody: tableList.join("\n") });
67
+ }
68
+ }
69
+
70
+ /**
71
+ * 指定された名前のHeadを検索し、Indexを返す
72
+ */
73
+ var getHeadIndex = function (sheet, name) {
74
+ var range = sheet.getRange("a1");
75
+ for (i = 0; i < sheet.getLastColumn(); i++) {
76
+ if (range.offset(0, i).getValue() == name) {
77
+ return i;
78
+ }
79
+ }
80
+ };
81
+
82
+ // DateをYYYY/MM/DD形式に変換する
83
+ var formatDate = function (date) {
84
+ var format = 'YYYY/MM/DD';
85
+ format = format.replace(/YYYY/g, date.getFullYear());
86
+ format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));
87
+ format = format.replace(/DD/g, ('0' + date.getDate()).slice(-2));
88
+ return format;
89
+ };
90
+ ```