お世話になっております。
kintoneの標準や無償プラグインで出来ない処理を実装するために、止む無くスクリプトを使っているのですが、管理者の方針でスクリプトを使わないような指示が出ています。
プラグインであれば汎用的で簡易な処理は実装可能かと思い、幾つかのスクリプト処理を置き換えようと思っているのですが、なかなか簡易なサンプルが見当たりません。
日付Aと日付Bを比較して大小比較チェックをするプラグインを作ってみようと思い、
chatgptに尋ねてみたところ、サンプルを作ってくれました。
しかし、zipファイルをアップロード時にエラーが出てしまいます。
「 インストールに失敗しました。プラグインのファイルが不足している、または正しくありません。 (GAIA_PL05 cVdmkaUF6yBL5y1c2a2d)」
zipファイルの構造は、
DATE-COMPARE-PLUGIN.zip
│ icon.png
│ manifest.json
├─html
│ └─ config.html
└─js
└─ main.js
となっており、
[manifest.json]
{
"manifest_version": 1,
"version": "1.0",
"type": "APP",
"name": {
"ja": "日付比較プラグイン(テキスト入力版)"
},
"description": {
"ja": "設定画面でフィールドコードを入力し、日付A > 日付B の場合にエラーとするプラグインです。"
},
"icon": "icon.png",
"desktop": {
"js": [
"js/main.js"
]
},
"mobile": {
"js": [
"js/main.js"
]
},
"config": {
"html": "html/config.html"
}
}
でjsonファイルの構文エラーは出ていません。
[main.js]
(function() {
"use strict";
// プラグイン設定を取得
var config = kintone.plugin.app.getConfig(kintone.$PLUGIN_ID);
var FIELD_A = config.fieldA;
var FIELD_B = config.fieldB;
if (!FIELD_A || !FIELD_B) {
// 設定されていない場合は何もしない
return;
}
// 保存時イベント
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
var record = event.record;
var dateA = record[FIELD_A].value;
var dateB = record[FIELD_B].value;
if (dateA && dateB) {
var dA = new Date(dateA);
var dB = new Date(dateB);
if (dA > dB) {
event.error = "日付Aは日付B以前である必要があります。";
record[FIELD_A].error = "日付A > 日付B です";
}
}
return event;
});
})();
となっています。
フィールド名は、直接入力する方法にしています。
[config.html]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>日付比較プラグイン設定</title>
</head>
<body>
<h2>日付比較の対象フィールドを指定してください</h2>
<p>
日付Aフィールドコード: <input type="text" id="fieldA">
</p>
<p>
日付Bフィールドコード: <input type="text" id="fieldB">
</p>
<button id="save">保存</button>
<button id="cancel">キャンセル</button>
<script>
(function() {
"use strict";
// 保存済み設定を読み込む
var config = kintone.plugin.app.getConfig(kintone.$PLUGIN_ID);
if (config.fieldA) document.getElementById("fieldA").value = config.fieldA;
if (config.fieldB) document.getElementById("fieldB").value = config.fieldB;
// 保存ボタン
document.getElementById("save").onclick = function() {
var newConfig = {
fieldA: document.getElementById("fieldA").value,
fieldB: document.getElementById("fieldB").value
};
kintone.plugin.app.setConfig(newConfig);
};
// キャンセルボタン
document.getElementById("cancel").onclick = function() {
history.back();
};
})();
</script>
</body>
</html>
文法的には問題がないと思われるのですが、アップロードするリソース自体に問題があるのでしょうか?
kintoneのサイトでもサンプルは見つかりましたが、難しくて内容が理解できず諦めてしまいました。
単純なサンプルが公開されているサイトがありましたら情報を頂けると幸いです。



