回答編集履歴

2

ほそく

2019/02/14 07:57

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -97,3 +97,133 @@
97
97
  }
98
98
 
99
99
  ```
100
+
101
+
102
+
103
+ ---
104
+
105
+ こんな感じですかね
106
+
107
+ * q174346_onEditっていうのをトリガー登録します
108
+
109
+ * __test_ではじまる2つは「関数実行」からテスト可能
110
+
111
+ ```javascript
112
+
113
+ function __test_q174346_onEdit() {
114
+
115
+ const sheet = SpreadsheetApp.getActiveSheet();
116
+
117
+ const e = { 'range': sheet.getActiveCell(), 'value': sheet.getActiveCell().getValue()};
118
+
119
+ q174346_onEdit(e);
120
+
121
+ }
122
+
123
+ function q174346_onEdit(e) {
124
+
125
+ const editingSheetName = e.range.getSheet().getName();
126
+
127
+ switch(editingSheetName) {
128
+
129
+ case "案件一覧":
130
+
131
+ CaseListEditing(e);
132
+
133
+ return;
134
+
135
+ default:
136
+
137
+ return;
138
+
139
+ }
140
+
141
+ }
142
+
143
+ function CaseListEditing(e) {
144
+
145
+ const col = e.range.getColumn();
146
+
147
+ switch(col) {
148
+
149
+ case 1: //A列
150
+
151
+ CaseListEditingRowA(e);
152
+
153
+ return;
154
+
155
+ default:
156
+
157
+ return;
158
+
159
+ }
160
+
161
+ }
162
+
163
+ function CaseListEditingRowA(e) {
164
+
165
+ const row = e.range.getRow();
166
+
167
+ const lastRow = e.range.getSheet().getLastRow();
168
+
169
+ if(row != lastRow) { return; } //最終行以外無視
170
+
171
+ const param1 = e.range.offset(0,4).getValue();
172
+
173
+ const param2 = e.range.offset(0,12).getValue();
174
+
175
+ const param3 = e.range.offset(0,6).getValue();
176
+
177
+ const param4 = e.range.offset(0,8).getValue();
178
+
179
+ const param5 = e.value;
180
+
181
+ const param6 = e.range.offset(0,1).getValue();
182
+
183
+ const message = param1 + '\n```' + '【' + param2 + '】' + param3 + '/' + param4 + '```\n上記ご依頼ありがとうございます。\n本件、' + param5 + '(' + param6 + ')が担当いたします。 \nよろしくお願いいたします。';
184
+
185
+ sendToSlack(message);
186
+
187
+ }
188
+
189
+ function __test_sendToSlack() {
190
+
191
+ sendToSlack("関数実行にてテスト");
192
+
193
+ }
194
+
195
+ function sendToSlack(message) {
196
+
197
+ message = message || "test";
198
+
199
+ const incomingHook = ''; //投稿するスラックのURL
200
+
201
+ const payload = {
202
+
203
+ 'username' : '自動通知Bot',
204
+
205
+ 'text' : message,
206
+
207
+ 'channel' : '#test',
208
+
209
+ 'icon_emoji': ':good:',
210
+
211
+ 'link_names': 1
212
+
213
+ }
214
+
215
+ var options = {
216
+
217
+ 'method':'post',
218
+
219
+ 'contentType': 'application/json',
220
+
221
+ 'payload': JSON.stringify(payload),
222
+
223
+ }
224
+
225
+ return UrlFetchApp.fetch(incomingHook, options);
226
+
227
+ }
228
+
229
+ ```

1

修正

2019/02/14 07:57

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -33,3 +33,67 @@
33
33
  ```
34
34
 
35
35
  後ろの比較は`>=`ではなく`==`では?
36
+
37
+
38
+
39
+
40
+
41
+ ---
42
+
43
+ 最新のコード欄
44
+
45
+ ```javascript
46
+
47
+ function onEdit(e) {
48
+
49
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
50
+
51
+ var sh = ss.getSheetByName("案件一覧");
52
+
53
+ var last_row = sh.getLastRow(); //スプレッドシートにデータが入力されている箇所の、最終行の数値を取得
54
+
55
+ var myCell = sh.getActiveCell(); //アクティブセルを取得
56
+
57
+
58
+
59
+ var currentSheetName = SpreadsheetApp.getActiveSheet().getName();
60
+
61
+ if( currentSheetName != "案件一覧" ) { return; } //これ。シート名が違ったら処理中断
62
+
63
+
64
+
65
+ if(myCell.getColumn()==1 && myCell.getRow()==last_row){
66
+
67
+ var payload = {
68
+
69
+ 'username' : 'slackBot',
70
+
71
+ 'text' : myCell.offset(0, 4).getValue() + '\n```' + '【' + myCell.offset(0, 12).getValue() + '】' + myCell.offset(0, 6).getValue() + '/' + myCell.offset(0, 8).getValue() + '```' + '\n上記ご依頼ありがとうございます。' + '\n本件、' + myCell.getValue() + '(' + myCell.offset(0, 1).getValue() + ')が担当いたします。 \nよろしくお願いいたします。' ,
72
+
73
+ 'channel' : '#test',
74
+
75
+ 'icon_emoji': ':good:',
76
+
77
+ 'link_names': 1
78
+
79
+ }
80
+
81
+ var options = {
82
+
83
+ 'method':'post',
84
+
85
+ 'contentType': 'application/json',
86
+
87
+ 'payload': JSON.stringify(payload),
88
+
89
+ }
90
+
91
+ var url = 'https://hooks.slack.com/services/xxxx'; //投稿するスラックのURL
92
+
93
+ UrlFetchApp.fetch(url, options);
94
+
95
+ }
96
+
97
+ }
98
+
99
+ ```