質問するログイン新規登録

回答編集履歴

2

ほそく

2019/02/14 07:57

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -47,4 +47,69 @@
47
47
  UrlFetchApp.fetch(url, options);
48
48
  }
49
49
  }
50
+ ```
51
+
52
+ ---
53
+ こんな感じですかね
54
+ * q174346_onEditっていうのをトリガー登録します
55
+ * __test_ではじまる2つは「関数実行」からテスト可能
56
+ ```javascript
57
+ function __test_q174346_onEdit() {
58
+ const sheet = SpreadsheetApp.getActiveSheet();
59
+ const e = { 'range': sheet.getActiveCell(), 'value': sheet.getActiveCell().getValue()};
60
+ q174346_onEdit(e);
61
+ }
62
+ function q174346_onEdit(e) {
63
+ const editingSheetName = e.range.getSheet().getName();
64
+ switch(editingSheetName) {
65
+ case "案件一覧":
66
+ CaseListEditing(e);
67
+ return;
68
+ default:
69
+ return;
70
+ }
71
+ }
72
+ function CaseListEditing(e) {
73
+ const col = e.range.getColumn();
74
+ switch(col) {
75
+ case 1: //A列
76
+ CaseListEditingRowA(e);
77
+ return;
78
+ default:
79
+ return;
80
+ }
81
+ }
82
+ function CaseListEditingRowA(e) {
83
+ const row = e.range.getRow();
84
+ const lastRow = e.range.getSheet().getLastRow();
85
+ if(row != lastRow) { return; } //最終行以外無視
86
+ const param1 = e.range.offset(0,4).getValue();
87
+ const param2 = e.range.offset(0,12).getValue();
88
+ const param3 = e.range.offset(0,6).getValue();
89
+ const param4 = e.range.offset(0,8).getValue();
90
+ const param5 = e.value;
91
+ const param6 = e.range.offset(0,1).getValue();
92
+ const message = param1 + '\n```' + '【' + param2 + '】' + param3 + '/' + param4 + '```\n上記ご依頼ありがとうございます。\n本件、' + param5 + '(' + param6 + ')が担当いたします。 \nよろしくお願いいたします。';
93
+ sendToSlack(message);
94
+ }
95
+ function __test_sendToSlack() {
96
+ sendToSlack("関数実行にてテスト");
97
+ }
98
+ function sendToSlack(message) {
99
+ message = message || "test";
100
+ const incomingHook = ''; //投稿するスラックのURL
101
+ const payload = {
102
+ 'username' : '自動通知Bot',
103
+ 'text' : message,
104
+ 'channel' : '#test',
105
+ 'icon_emoji': ':good:',
106
+ 'link_names': 1
107
+ }
108
+ var options = {
109
+ 'method':'post',
110
+ 'contentType': 'application/json',
111
+ 'payload': JSON.stringify(payload),
112
+ }
113
+ return UrlFetchApp.fetch(incomingHook, options);
114
+ }
50
115
  ```

1

修正

2019/02/14 07:57

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -15,4 +15,36 @@
15
15
  ```javascript
16
16
  if(myCell.getColumn()==1 && myCell.getRow()==last_row){
17
17
  ```
18
- 後ろの比較は`>=`ではなく`==`では?
18
+ 後ろの比較は`>=`ではなく`==`では?
19
+
20
+
21
+ ---
22
+ 最新のコード欄
23
+ ```javascript
24
+ function onEdit(e) {
25
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
26
+ var sh = ss.getSheetByName("案件一覧");
27
+ var last_row = sh.getLastRow(); //スプレッドシートにデータが入力されている箇所の、最終行の数値を取得
28
+ var myCell = sh.getActiveCell(); //アクティブセルを取得
29
+
30
+ var currentSheetName = SpreadsheetApp.getActiveSheet().getName();
31
+ if( currentSheetName != "案件一覧" ) { return; } //これ。シート名が違ったら処理中断
32
+
33
+ if(myCell.getColumn()==1 && myCell.getRow()==last_row){
34
+ var payload = {
35
+ 'username' : 'slackBot',
36
+ '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よろしくお願いいたします。' ,
37
+ 'channel' : '#test',
38
+ 'icon_emoji': ':good:',
39
+ 'link_names': 1
40
+ }
41
+ var options = {
42
+ 'method':'post',
43
+ 'contentType': 'application/json',
44
+ 'payload': JSON.stringify(payload),
45
+ }
46
+ var url = 'https://hooks.slack.com/services/xxxx'; //投稿するスラックのURL
47
+ UrlFetchApp.fetch(url, options);
48
+ }
49
+ }
50
+ ```