#kintoneのアクションボタンを作ってみた
kintoneにはアクションボタンという必要項目だけをコピーして、
新しいレコードを作成する便利機能がありますが、年度や月度をプラス1したいなぁ~
と思ったときに、、、うん。できないね。
じゃあ作るしかないかぁ~(;´Д`)といった流れで作ってみました。
##さっそくJS書いていく
※なんとなくsessionStorageを使えばできるだろ。くらいの考えでsessionStorageを使っています。
action.js
const APP_ID = 123; /* アプリの番号 */
let _s_storage = window.sessionStorage;
(function() {
'use strict';
kintone.events.on("app.record.detail.show", function(e) {
/* まずsessionStorageを綺麗にする */
_s_storage.clear();
/* ボタン増殖バグ回避 */
if (document.getElementById("actionBtn") !== null) {
return event;
}
/* ヘッダー要素 */
const header = kintone.app.record.getHeaderMenuSpaceElement()
/* ボタン作成 */
const actionbtn = document.createElement("button");
actionBtn.id = "actionBtn";
actionBtn.innerHTML = "来年度";
actionbtn.onclick = function() {
/* クリックイベント */
/* +1した年度を格納する */
const year = Number(e.record["年度"].value) + 1;
_s_storage.setItem("年度", year);
/* レコード作成画面を開く */
window.open("https://{ドメイン}.cybozu.com/k/" + APP_ID + "/edit", "_blank");
/* リロードしてsessionStorageの中身を削除 */
location.reload();
};
/* ヘッダーにボタン要素を付加 */
header.appendChild(actionBtn);
});
})();
/* 別アプリにコピーしたい場合は以下をコピー先のアプリに反映する。 */
let _s_storage = window.sessionStorage;
(function() {
'use strict';
kintone.events.on("app.record.create.show", function(e) {
if (!_s_storage.getItem("年度")) {
const record = e.record;
record["年度"].value = _s_storage.getItem("年度");
/* キャンセルした時の処理 */
const cancelBtn = document.getElementsByClassName("gaia-ui-actionmenu-cancel");
cancelBtn[0].addEventListener("click", function() {
window.close();
}, false);
/* 反映したあとはsessionStorageの中身を削除 */
_s_storage.clear();
}
return e;
});
})();
これでいい感じに動きました。
同じような悩みがある方は、是非ご参考程度に使ってやってくださいm(__)m