一括承認の方法 西達彦 2019年06月20日 00:44 https://developer.cybozu.io/hc/ja/articles/211583223-%E3%83%AF%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%A7%E4%B8%80%E6%8B%AC%E6%89%BF%E8%AA%8D%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86 上記の記事を参考に一括承認を実装したのですが、 承認ボタンを押しても何も反応しません。 最近の仕様変更でJavascriptが動かなくなったのでしょうか。 一括承認を実装したいのですが、方法を教えていただけると幸いです。 0
17件のコメント
お世話になっております。
実際に実装したコードをお見せいただければ
具体的なアドバイスができるかもしれません。
よろしくお願いいたします。
ご返事ありがとうございます。
実際のコードは下記の通りです。
(function() {
"use strict";
kintone.events.on("app.record.index.show", function(event) {
var appId = kintone.app.getId();
if (event.viewId !== 5521120) {
return;
}
if ($('.header-contents').length !== 0) {
return;
}
var el = kintone.app.getHeaderSpaceElement();
var headerDiv = $("<div></div>", {
class: "header-contents"
});
//make a button for approval.
var balusButton = $("<button></button>", {
class: "approval-button"
}).
html("一括承認!").
click(function() {
if (event.records.length > 0) {
window.swal({
title: "本当に全て承認して大丈夫ですか?",
text: "表示されているレコードを全て承認します",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "承認!",
cancelButtonText: "やっぱりやめる",
closeOnConfirm: false },
function() {
var records = [];
for (var h = 0; h < event.records.length; h++) {
var obj = {};
obj["id"] = event.records[h].$id.value;
obj["action"] = "承認する"; //プロセス管理で設定されたアクション名を指定
records.push(obj);
}
var requestObj = {
"app": appId,
"records": records
};
kintone.api("/k/v1/records/status", "PUT", requestObj, function() {
window.swal({title: "承認に成功しました!",
text: "お疲れ様でした。",
type: "success"}, function() {
location.reload();
});
});
});
} else {
window.swal({
title: "申請中のレコードがありません",
type: "warning"});
}
});
headerDiv.append(balusButton);
headerDiv.append($("<br />"));
headerDiv.appendTo(el);
});
})();
以下のサイトを参考に実装しています。
https://developer.cybozu.io/hc/ja/articles/211583223-%E3%83%AF%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%A7%E4%B8%80%E6%8B%AC%E6%89%BF%E8%AA%8D%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86
コードにミスはないようですので、
下記のJSファイル、CSSファイルが同時に読み込まれているかご確認ください。
(アプリ設定→JavaScript / CSSでカスタマイズ→PC用のJavaScriptファイルおよびPC用のCSSファイル)
なお、今回実装しようとしている.jsファイルよりも上に配置する必要があります。
ご回答ありがとうございます。
ご指摘の部分確認しましたが、JSファイルとCSSファイルは読み込まれておりました。
また実装しているjsファイルより上にありました。
下記画面は出るのですが・・・
プロセス管理のアクション名は正しいでしょうか?
また、プロセス管理は途中の段階を飛ばすことはできませんので、
未処理 ⇒ 申請 ⇒ 承認というプロセスの場合、
今回のカスタマイズで実現できるのは、 申請 のステータスを絞り込んで表示した状態で
「承認する」というアクションを押すという形です。
ご回答ありがとうございます。
アクション名は"承認する"にしております。
一応、下記の通り申請中のみ絞り込んで一括承認のボタンを表示させていたます。
なるほど、設定は問題ないようですね。
そうしましたら、その画面でF12を押していただき、一括承認ボタンを押したときの
console.logを貼り付けていただけませんでしょうか。
ご回答ありがとうございます。
ログを取得しました。
私の知識では分らなくて、教えていただけると助かります。
原因はPUT(レコードの更新作業)ですね。
二行目のPUTというところの▶ボタンを押した内容も貼っていただけますか。
ゲストスペースだったりすることはございませんか?
ご回答ありがとうございます。
スペースではなく通常のアプリになります。
putを展開した情報を添付いたします。
私の知識が足らず大変申し訳ございません。
何卒宜しくお願い致します。
西様
もしかして、ですが…テスト環境で実行されておりますでしょうか?
テスト環境だとAPIがうまく動作致しません。
Teru様
ご回答ありがとうございます。
そうなのですね!
テスト環境でしておりました。。。
本番環境で行いましたら無事動作いたしました。
大変申し訳ありませんでした。
また、丁寧にご回答いただきありがとうございました!
西様
無事動いたとのことで安心しました!
また何かあればご相談ください。
Teru様
私も同じ症状で、下記はPUTを転載した内容です。
本番環境で行っています。
この後の対応はどうしたらよいでしょうか……。
index.js:1050 PUT https://cybozu.com/k/v1/records/status.json 520 (520)
アイ サテライトさん
私も同じ症状で悩んでいたところ
必要なアクセス権を確認したところ
https://developer.cybozu.io/hc/ja/articles/204791550
となっており、作業者に指定されていない人が実行していたことが原因でした。
もしかしたら別の原因や解決済みかもしれませんが、もし同じようにお困りの方がいらっしゃったときの参考になれば幸いです。