プラグインにある自動採番では付けたい番号を付けることが出来ないので
JavaScriptで自動採番を行おうとしています。
https://developer.cybozu.io/hc/ja/articles/201235480-%E5%B9%B4%E6%AC%A1%E3%81%94%E3%81%A8%E3%81%AE%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA%E3%82%92%E8%A1%8C%E3%81%86%E3%83%AF%E3%82%B6
こちらの情報を元に自動採番が出来るようにしたのですが
番号のカウントアップが自分のアクセス権のあるレコードのみで判断してしまう為、
すべてのレコードを取得したうえで新しい番号を付けたいと考えています。
APIトークンでアクセス権の無いレコードを含めて処理を実行できるかと思ったのですが
上記のURLのスクリプトにどのように追加して記載するべきか分からずご教示頂けたらと思います。
よろしくお願い致します。
URL内の25行目のリクエストはJavascript APIにて記述されておりますので、
REST APIを使用する方法に変更が必要です。
(JavascriptAPIではAPIトークンを使用できないため)
REST APIをより扱いやすくするためのライブラリがありますので、
こちらを使用していただくと良いかと思います。
https://developer.cybozu.io/hc/ja/articles/900000767263
Taiki Tsujimoto様
こちらの件、ご教示頂きありがとうございました。
無事すべてのレコードから最新の値が取れるようになりました。
スクリプトについて知識が無く申し訳ないのですが、
取得した情報を保存時に自動採番フィールドに値を入れて保存したいのですが
ブランクのまま保存されてしまいます。
function autoNum(event){
var header = {
“X-Cybozu-API-Token”: “APIトークン”,
“Content-Type”: JSON.stringify(“application/json”),
“__REQUEST_TOKEN__”: kintone.getRequestToken()
};
var record = event.record;
~~~~~~~~~~~
var query = ‘日付 >= "’ + dtmin + ‘" and 日付 < "’ + dtmax + ‘" order by 自動採番 desc limit 1’;
query = encodeURIComponent(query);
var url = kintone.api.url(‘/k/v1/records’, true) + “?app=” + アプリID+ “&query=” + query;
kintone.proxy(url, ‘GET’, header, param, function(body, status, headers){
var records = JSON.parse(body).records;
// 対象レコードがあった場合
if (records.length > 0){
var rec = records[0];
var autono = rec[‘自動採番’].value;
autono = parseInt(autono.substring(3), 10) + 1;
autono = ‘00’ + autono;
record[‘自動採番’].value = autono;
// 対象レコードがなかった場合
} else {
record[‘自動採番’].value = ‘00’ + ‘-001’;
}
return event;
});
}
record[‘自動採番’].value
もしくは
return event;
の書き方に問題があるのだとは思いますが
どのように修正すればよいか分からず。
原因など分かりましたら教えて頂けると助かります。
現在の処理ですと、return eventはkintone.proxy〜のコールバック関数に対しての処理になっており、
autoNum関数の返り値は空の値になっているものかと思います。
先程のサンプルURLの25行目にて、先頭でreturnしているのをご参考にしていただくといいかと思います。
REST APIについて理解しておらず申し訳ございません。
頂いたURLにあったKintoneRestAPIClient.min.jsは使えるようにしました。
サンプルコードとAPIトークン認証の記載も試したのですが
エラーになってしまったため上記のようなスクリプトを書きました。
>>URL内の25行目のリクエストはJavascript APIにて記述されておりますので、
>>REST APIを使用する方法に変更が必要です。
最初に頂いたこちらのJavascriptをREST APIを使用する方法に変更と言うのは
どのようにすればいいでしょうか?
混乱させてしまいすみません。
kintone.proxyを使用して期待通りのレコードを取得できているようですので、
私が紹介したライブラリを無理に使って頂く必要はございません。
頂いているコードの「kintone.proxy〜」の前に「return 」を追加していただくことで、
ブランクとなる問題は解消しないでしょうか。
returnの箇所を下記のように書き直して改善しました。
return kintone.proxy(url, ‘GET’, header, param).then(function(resp) {
var records = JSON.parse(resp[0]).records;
大変助かりました。ありがとうございます。