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

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

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

kintone(キントーン)とは、サイボウズ社が提供する業務改善プラットフォームです。

JavaScript

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

Slack

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

Q&A

1回答

1341閲覧

kintoneでチェックボックスにチェックが入ったとき一度だけSlackに通知したい

nullsan

総合スコア20

kintone

kintone(キントーン)とは、サイボウズ社が提供する業務改善プラットフォームです。

JavaScript

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

Slack

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

0グッド

1クリップ

投稿2020/01/10 01:18

こんにちは。
kintoneでレコード詳細画面を開き編集し、チェックボックスにチェックが入ってレコードを保存した際に一度だけSlackに通知をしたいと思い以下のようにコーディングしました。

JS

1 kintone.events.on("app.record.edit.submit.success", function(e) { 2 var field = e.record; 3 var shop = e.record.ドロップダウン.value; 4 var name = e.record.文字列__1行__0.value; 5 var car = e.record.文字列__1行__3.value; 6 var type = e.record.文字列__1行__4.value; 7 var number = e.record.文字列__1行__6.value; 8 var year = e.record.文字列__1行__5.value; 9 var key = e.record.ラジオボタン.value; 10 var day = e.record.日付_10.value; 11 var ss = e.record.ドロップダウン_2.value; 12 var chk = e.record.チェックボックス_6.value 13 console.log(field); 14 15 if (chk == 'チェックが入りました') { 16 var thisUrl = "https://サブドメイン/k/guest/15/" + kintone.app.getId() + "/show#record=" + kintone.app.record.getId(); 17 var webhookUrl = 'https://hooks.slack.com/services/------------------'; 18 var payload = {メッセージ}; 19 return new kintone.Promise(function(resolve, reject) { 20 kintone.proxy(webhookUrl, 'POST', {}, payload, function(body, status, headers) { 21 console.log(status, body); 22 resolve(e);

これですとチェックボックスにチェックが入っているとき保存ボタンを押すたびに通知が来てしまいます。
そこで以下のコードを先頭に追記しました

JS

1 var chk1 = ""; 2 var chk2 = ""; 3 4 kintone.events.on('app.record.detail.show', function(a) { 5 console.log(a.record); 6 chk1 = a.record.チェックボックス_6.value; 7 console.log(chk1); 8 }); 9 10 kintone.events.on("app.record.edit.submit.success", function(e) { 11 var field = e.record; 12 var shop = e.record.ドロップダウン.value; 13 var name = e.record.文字列__1行__0.value; 14 var car = e.record.文字列__1行__3.value; 15 var type = e.record.文字列__1行__4.value; 16 var number = e.record.文字列__1行__6.value; 17 var year = e.record.文字列__1行__5.value; 18 var key = e.record.ラジオボタン.value; 19 var day = e.record.日付_10.value; 20 var ss = e.record.ドロップダウン_2.value; 21 chk2 = e.record.チェックボックス_6.value 22 console.log(field); 23 24 25 if(chk1 != chk2){ 26 if (chk2 == 'チェックが入りました') { 27 var thisUrl = "https://サブドメイン/k/guest/15/" + kintone.app.getId() + "/show#record=" + kintone.app.record.getId(); 28 var webhookUrl = 'https://hooks.slack.com/services/------------------'; 29 var payload = {メッセージ}; 30 return new kintone.Promise(function(resolve, reject) { 31 kintone.proxy(webhookUrl, 'POST', {}, payload, function(body, status, headers) { 32 console.log(status, body); 33 resolve(e);

レコード詳細を開いたときの初期のチェックボックスの状態を変数に格納し、変更があった場合のみ通知しようとしましたが、
これを記述してもやはり保存のたびに通知が入ってしまいます。
なにか解決方法があればご教示いただけませんか?

宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

お世話になります。

今回の件に関しまして、現状では改善していますでしょうか。
今回の事象としては、恐らくイベントの発火条件の問題だと思われます。

**"app.record.edit.submit.success"の部分を、"app.record.edit.change"**に変えてみるとどうでしょうか。

それぞれの役割としては、
前者:レコード編集画面で保存ボタンをクリックし、サーバーの保存が成功した後
後者:レコード編集画面で、指定フィールドの値が変更された時、フォームの値を書き換えた時
となっています。

投稿2021/05/22 06:48

bug2

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問