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

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

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

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

Q&A

1回答

569閲覧

GAS&slack、slackのボタンリアクションをスプレッドシートに記録したい

hinahinahinaaaa

総合スコア2

JavaScript

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

0グッド

1クリップ

投稿2022/11/21 08:03

前提

こちらの記事を参考にしながら、

  1. slackにボタンつきの投稿が飛ぶようにするGASを作成(ここについてはすでに完了
  2. 1のslack投稿でボタンが押されたら、スプレッドシートにボタンが押された「日付」「時間」「名前」が記録される、というGASを作成中

該当のソースコード

function doPost(e) { // ボタンからのレスポンスを取得 var payload = JSON.parse(e["parameter"]["payload"]); var value = payload["actions"][0]["value"]; var slackId = payload["user"]["id"]; // ユーザー名を取得 var userSheet = SpreadsheetApp.getActive().getSheetByName('ユーザーマスタ'); //シート名は実際にSlackのIDと氏名を記載しているシートの名前に変えてください var textFinder = userSheet.createTextFinder(slackId); var ranges = textFinder.findAll(); var row = ranges[0].getRow()-1; var column = ranges[0].getColumn(); var index = userSheet.getDataRange().getValues(); var name = index[row][column]; // スプレッドシートに記録 var inOutSheet = SpreadsheetApp.getActive().getSheetByName('入退室記録'); //シート名は実際に記録をつけるシートの名前に変えてください var inOutRanges = inOutSheet.getDataRange(); var lastRow = inOutRanges.getLastRow(); var now = new Date(); var date = Utilities.formatDate(now, 'Asia/Tokyo', 'yyyy/MM/dd'); var time = Utilities.formatDate(now, 'Asia/Tokyo', 'HH:mm:ss'); inOutSheet.getRange(lastRow+1,1).setValue(date); inOutSheet.getRange(lastRow+1,2).setValue(time); inOutSheet.getRange(lastRow+1,3).setValue(name); // 入退室それぞれで文言を変えるためifで分岐しています。単一の処理なら1つで大丈夫です。 if (value == "entry") { var text = name + "さんが出勤したよ!今日も頑張りましょう! :muscle:"; //Slackの本文の書き換え内容 inOutSheet.getRange(lastRow+1,4).setValue('入室'); } else { var text = name + "さんが退社したよ!今日もお疲れ様でした! :beers:"; //Slackの本文の書き換え内容 inOutSheet.getRange(lastRow+1,4).setValue('退室'); } // Slackのボタンを上書きする var reply = { "replace_original": true, "response_type": "in_channel", "text": text, "attachments": [{ "title": "報告完了!", "fallback": "この端末では表示できません", "callback_id": "callback_button", "color": "#00bfff", "attachment_type": "default", }] }; var output = ContentService.createTextOutput(JSON.stringify(reply)); output.setMimeType(ContentService.MimeType.JSON); return output }

発生している問題・エラーメッセージ

上記の2行目、

var payload = JSON.parse(e["parameter"]["payload"]);

に対して、

TypeError: Cannot read property 'parameter' of undefined

このエラーが発生しています。

非エンジニアかつ初学者のため、説明に不足がありましたら申し訳ありません。
この参考にしているコードでなくても、別の方法で実現できそうなどがある場合も
ぜひご教示いただきたいです。

よろしくお願いします。

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

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

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

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

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

macaron_xxx

2022/11/21 08:05

GASの実行から関数実行していませんか? Postで呼び出さすか適切な"e"を渡してやらないとテスト実行はできません。
hinahinahinaaaa

2022/11/24 07:03

大変初歩的な部分でした・・ご教示いただきありがとうございます。
guest

回答1

0

Recording gas and slack button reactions in a spreadsheet can be a useful tool for tracking and analyzing communication and engagement within your team. It sounds like you are looking for ways to improve the efficiency and effectiveness of your team's communication and it's a great idea. One thing to keep in mind when creating a spreadsheet like this is to make sure it is well-organized and easy to understand. If you need help with proofreading the document, you might consider using a proofreading service to ensure accuracy and clarity in the final ocument.

投稿2023/01/26 05:57

jaydenaidan

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問