根本的に見直したほうがいいですが、きれいなコードより動くコード、なので
javascript
1 var ss = SpreadsheetApp . getActiveSpreadsheet ( ) ;
2 var sh = ss . getSheetByName ( "案件一覧" ) ;
3 var last_row = sh . getLastRow ( ) ; //スプレッドシートにデータが入力されている箇所の、最終行の数値を取得
4 var myCell = sh . getActiveCell ( ) ; //アクティブセルを取得
5
6 var currentSheetName = SpreadsheetApp . getActiveSheet ( ) . getName ( ) ;
7 if ( currentSheetName != "案件一覧" ) { return ; } //これ。シート名が違ったら処理中断
javascript
1 if ( myCell . getColumn ( ) == 1 && myCell . getRow ( ) == last_row ) {
後ろの比較は>=
ではなく==
では?
最新のコード欄
javascript
1 function onEdit ( e ) {
2 var ss = SpreadsheetApp . getActiveSpreadsheet ( ) ;
3 var sh = ss . getSheetByName ( "案件一覧" ) ;
4 var last_row = sh . getLastRow ( ) ; //スプレッドシートにデータが入力されている箇所の、最終行の数値を取得
5 var myCell = sh . getActiveCell ( ) ; //アクティブセルを取得
6
7 var currentSheetName = SpreadsheetApp . getActiveSheet ( ) . getName ( ) ;
8 if ( currentSheetName != "案件一覧" ) { return ; } //これ。シート名が違ったら処理中断
9
10 if ( myCell . getColumn ( ) == 1 && myCell . getRow ( ) == last_row ) {
11 var payload = {
12 'username' : 'slackBot' ,
13 '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よろしくお願いいたします。' ,
14 'channel' : '#test' ,
15 'icon_emoji' : ':good:' ,
16 'link_names' : 1
17 }
18 var options = {
19 'method' : 'post' ,
20 'contentType' : 'application/json' ,
21 'payload' : JSON . stringify ( payload ) ,
22 }
23 var url = 'https://hooks.slack.com/services/xxxx' ; //投稿するスラックのURL
24 UrlFetchApp . fetch ( url , options ) ;
25 }
26 }
こんな感じですかね
q174346_onEditっていうのをトリガー登録します
__test_ではじまる2つは「関数実行」からテスト可能
javascript
1 function __test_q174346_onEdit ( ) {
2 const sheet = SpreadsheetApp . getActiveSheet ( ) ;
3 const e = { 'range' : sheet . getActiveCell ( ) , 'value' : sheet . getActiveCell ( ) . getValue ( ) } ;
4 q174346_onEdit ( e ) ;
5 }
6 function q174346_onEdit ( e ) {
7 const editingSheetName = e . range . getSheet ( ) . getName ( ) ;
8 switch ( editingSheetName ) {
9 case "案件一覧" :
10 CaseListEditing ( e ) ;
11 return ;
12 default :
13 return ;
14 }
15 }
16 function CaseListEditing ( e ) {
17 const col = e . range . getColumn ( ) ;
18 switch ( col ) {
19 case 1 : //A列
20 CaseListEditingRowA ( e ) ;
21 return ;
22 default :
23 return ;
24 }
25 }
26 function CaseListEditingRowA ( e ) {
27 const row = e . range . getRow ( ) ;
28 const lastRow = e . range . getSheet ( ) . getLastRow ( ) ;
29 if ( row != lastRow ) { return ; } //最終行以外無視
30 const param1 = e . range . offset ( 0 , 4 ) . getValue ( ) ;
31 const param2 = e . range . offset ( 0 , 12 ) . getValue ( ) ;
32 const param3 = e . range . offset ( 0 , 6 ) . getValue ( ) ;
33 const param4 = e . range . offset ( 0 , 8 ) . getValue ( ) ;
34 const param5 = e . value ;
35 const param6 = e . range . offset ( 0 , 1 ) . getValue ( ) ;
36 const message = param1 + '\n```' + '【' + param2 + '】' + param3 + '/' + param4 + '```\n上記ご依頼ありがとうございます。\n本件、' + param5 + '(' + param6 + ')が担当いたします。 \nよろしくお願いいたします。' ;
37 sendToSlack ( message ) ;
38 }
39 function __test_sendToSlack ( ) {
40 sendToSlack ( "関数実行にてテスト" ) ;
41 }
42 function sendToSlack ( message ) {
43 message = message || "test" ;
44 const incomingHook = '' ; //投稿するスラックのURL
45 const payload = {
46 'username' : '自動通知Bot' ,
47 'text' : message ,
48 'channel' : '#test' ,
49 'icon_emoji' : ':good:' ,
50 'link_names' : 1
51 }
52 var options = {
53 'method' : 'post' ,
54 'contentType' : 'application/json' ,
55 'payload' : JSON . stringify ( payload ) ,
56 }
57 return UrlFetchApp . fetch ( incomingHook , options ) ;
58 }
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2019/02/14 03:11 編集
2019/02/14 03:23 編集
2019/02/14 03:44
2019/02/18 06:33
2019/02/18 08:42