質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

2368閲覧

Googleスプレッドシート×slack

usami

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

1クリップ

投稿2019/03/12 04:17

編集2019/03/12 04:48

GoogleフォームをGoogleスプレッドシートに接続して、
フォームへの入力やスプレッドシートの変更があるたびにslackに内容を投稿するモノを作っています。

がうまくいきません。

エラーは出ていないのですが、肝心のslackへの投稿ができていない感じです。

イメージ説明

ご教授お願いいたします。

GAS

1function myFunction(){ 2 3var postText; 4 5//GoogleSpreadSheetの変更をSlackに通知する関数 6 7function postSheetChange(){ 8 9//自作の関数:slackに通知する文字列を作成 10createSendMessage(); 11//slackに通知する文字列を設定 12var postText = this.postText; 13//自作の関数: textをslackに通知する関数を呼び出す 14postSlack(postText) 15} 16 17function createSendMessage(){ 18var time = new Date(); 19var month = time.getMonth() + 1; 20var day = time.getDate(); 21var today = month + '月'+ day + '日'; 22var postText; 23var notifySheet = SpreadsheetApp.getActiveSpreadsheet(); 24 25function postSlack(text){ 26var url = 'WEB hook URL'; 27var options = { 28'method' : 'POST', 29'headers': {'Content-type': 'application/json'}, 30'payload' : JSON.stringify({ 31  'channel' : '#予約状況', 32  'text' : text, 33  }) 34}; 35UrlFetchApp.fetch(url, options); 36} 37 38//アクティブセルを取得する 39var myCell = notifySheet.getActiveCell(); 40 41//アクティブセルがD列の場合(仕事の進捗)のみ通知する 42if(myCell.getColumn() == 2,3,4,5,6,7,8){ 43var rowNum = myCell.getRow(); 44 45//slackへの投稿文章 46this.postText = 47'(' + today + ')ご予約が入りました\n' + 48'お名前  :' + notifySheet.getRange('C' + rowNum).getValue() + '\n' + 49'利用するお部屋  :' + notifySheet.getRange('D' + rowNum).getValue() + '\n' + 50'利用日時:' + notifySheet.getRange('E' + rowNum).getValue() + '\n' + 51'退室予定:' + notifySheet.getRange('F' + rowNum).getValue() + '\n' + 52'利用人数:' + notifySheet.getRange('G' + rowNum).getValue() + '\n' + 53'備考:' + notifySheet.getRange('H' + rowNum).getValue() + '\n'; 54} 55} 56} 57

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/03/12 04:46

GoogleタグとGoogle APIタグは無関係なので削除を推奨します。
guest

回答1

0

ベストアンサー

javascript

1function myFunction(){ 2 postSheetChange(); 3} 4function createSendMessage(){ 5 var time = new Date(); 6 var month = time.getMonth() + 1; 7 var day = time.getDate(); 8 var today = month + '月'+ day + '日'; 9 var postText; 10 var notifySheet = SpreadsheetApp.getActiveSpreadsheet(); 11 12 //アクティブセルを取得する 13 var myCell = notifySheet.getActiveCell(); 14 15 //アクティブセルがD列の場合(仕事の進捗)のみ通知する 16 const cell = myCell.getColumn(); 17 if(cell >= 2 && cell <= 8){ 18 var rowNum = myCell.getRow(); 19 20 //slackへの投稿文章 21 return '(' + today + ')ご予約が入りました\n' + 22 'お名前  :' + notifySheet.getRange('C' + rowNum).getValue() + '\n' + 23 '利用するお部屋  :' + notifySheet.getRange('D' + rowNum).getValue() + '\n' + 24 '利用日時:' + notifySheet.getRange('E' + rowNum).getValue() + '\n' + 25 '退室予定:' + notifySheet.getRange('F' + rowNum).getValue() + '\n' + 26 '利用人数:' + notifySheet.getRange('G' + rowNum).getValue() + '\n' + 27 '備考:' + notifySheet.getRange('H' + rowNum).getValue() + '\n'; 28 } 29 return ""; 30} 31//GoogleSpreadSheetの変更をSlackに通知する関数 32function postSheetChange(){ 33 34 //自作の関数:slackに通知する文字列を作成 35 const postText = createSendMessage(); 36 if(postText === "") return; 37 // //slackに通知する文字列を設定 38 // var postText = this.postText; 39 //自作の関数: textをslackに通知する関数を呼び出す 40 postSlack(postText) 41} 42function postSlack(text){ 43 var url = 'WEB hook URL'; 44 var options = { 45 'method' : 'POST', 46 'headers': {'Content-type': 'application/json'}, 47 'payload' : JSON.stringify({ 48   'channel' : '#予約状況', 49   'text' : text, 50   }) 51 }; 52 UrlFetchApp.fetch(url, options); 53}

投稿2019/03/12 04:46

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usami

2019/03/12 04:54

動きました!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問