新規投稿
フォローする

kintone/rest-api-clientの利用について

お世話になります。

kintone/rest-api-clientを利用する為、リンクを

https://developer.cybozu.io/hc/ja/articles/202960194

からコピーし、アプリの設定→JavaScript / CSSでカスタマイズ

のURL指定にいれ、保存しております。

その後、JSEdit for kintoneで

const client = new KintoneRestAPIClient();
const res = await client.record.getRecords({

と入れると、Missing ”;” before statementエラーが出ます。

やりたいことは,

https://qiita.com/juri_don/items/d69e375498e96847d4d9

を試してみたいのですが、出来ればブラウザ上で完結できればと

思いnpmではなく、上記方法を試してみました。

 

サンプル用のjsファイルは、

と並べているので、並べ方の問題ではないと思います。

 

初心者で中級者が行うような内容かもしれませんが、アドバイス等

頂ければ幸いです。

よろしくお願いいたします。

 

0

7件のコメント

Avatar
juridon

記事を読んでくださってありがとうございます!

const client = new KintoneRestAPIClient();
const res = await client.record.getRecords({

という2行だけを
JSEdit for kintone
に書かれたということでしょうか??

0
Avatar
Tofu

juridon様

色々とやりたいことがあり、毎日色々とサイトに探しながらトライしています。
以前もkintone/rest-api-clientのUpsertがあり、おぉ、とはなったものの
導入についてのやり方がそのものがよくわかっておらず、一旦保留にしておりました。
今回は別のアプリの目途がつき、再度挑戦しようと思ったところ該当の記事を
確認し、これでできる!と思い、まずは同じフォームから試してみようと思った次第です。

本題ですが、JSEdit for kintone(ver.4)を利用しています。
現在の構築は私自身が行っておりますが、運用後は別の担当者になる可能性もあり、
Kintone自身で完結できる形を利用としております。

コード自身は、'app.record.create.submit.success'を入れ、他のところはJuridon様の
コードをそのままコピー/ペーストしております。
フィールド名、項目もすべて同じものを用意しました。
(function() {
"use strict";

kintone.events.on("app.record.create.submit.success", function(event) {
if (!event.record.TUID.value) {
const client = new KintoneRestAPIClient();
const res = await client.record.getRecords({
app: kintone.app.getId(),
fields: "TUID",
query: "order by TUID desc limit 1",
});
// 1レコード目だったら1。その他は最大値のTUIDに+1する
event.record.TUID.value =
res.records.length > 0 ? Number(res.records[0].TUID.value) + 1 : 1;
}

コードを勉強しながら、行っていこうと思っているのでまずは上記が出来たらと
思っており、他のコードはまだ実施できておりません。
以上となります、よろしくお願いいたします。

0
Avatar
juridon

こんにちは。

Missing ”;” before statement ; が足りていない時に出るエラーですので再度確認してみてください。

書いていただいたコードは全部でしょうか??もし全部だとしたらですが、
カッコ閉じるがいくつか足りていないと思います。

また、記事の方には書いていなくて申し訳ないのですが、
このコードを書くべきイベントは「レコード追加画面の保存成功後イベント」ではなく、「保存実行前イベント」の方になります。

フィールドに値を入力して保存ボタンを押す

保存前イベントが走る ここでevent.record内を書き換える(JavaScript)

保存処理で書き換えたあとのフィールドの値で保存される(kintoneの処理)

保存後イベントが走る (今回のコードでは保存後のJavaScript不要)

という仕組みになっています。

記事の方はどちらかと言うとkintoneカスタマイズや通常のAPI使いに慣れていて分かる方向けに書いており、細かいところを説明しておりません。
実を言うとデータに不整合が起きそうな、あまりオススメできないちょっと「沼」なカスタマイズ方法を紹介している感じですので、

もし純粋にkintone REST API Client試したい~という場合は
下記記事など参考にしてもらえると良いかもしれません。(即時関数やイベント処理の書き方は相変わらず省略しておりますが)
https://qiita.com/juri_don/items/138fa7c626da7d1590b4

ご参考になれば幸いです。

0
Avatar
Tofu

juridon様

お世話になります。

(function(){
"use string";

kintone.app.record.on('app.record.create.submit', function(event){
if (!event.record.TUID.value) {
const client = new KintoneRestAPIClient();
const res = await client.record.getRecords({
app: kintone.app.getId(),
fields: "TUID",
query: "order by TUID desc limit 1",
});
// 1レコード目だったら1。その他は最大値のTUIDに+1する
event.record.TUID.value =
res.records.length > 0 ? Number(res.records[0].TUID.value) + 1 : 1;
}
});
})();

コードは以上で、追記などはありません。
それ以外の部分でのエラーはないのですが、記載漏れがあるのでしょうか?
コミュニティ内の記事でも検索をかけているのですが、検索の仕方が悪いのか、
検時点では勉強不足で少しつまりそうです…
もう少し勉強してみようと思いますが、もしご指摘いただけるのであれば幸いです。
よろしくお願いいたします。

0
Avatar
kh

Tofu様

実際に動作確認した訳ではないですが、パット見た感じ

3行目を

kintone.events.on('app.record.create.submit', async (event) => {

にすると解決するかなと思います。

awaitは必ずasync関数の中で使用する必要があります。

※ここら辺はJavaScript(ES2016以降)自体の話なので、コミュニティ内で言及している箇所はないかと思われます。

また、「kintone.app.record.on」の部分を「kintone.events.on」に修正しました。

1
Avatar
juridon

Tofu さん

kh さんがご指摘の通り、3行目の修正が必要です。
(khさん、ありがとうございます。)

それと、TUIDフィールドを更新するならreturn event; が必要です。
↓こちらのサンプルコードも参考にされると良いと思います。
レコード追加画面の保存成功後イベント

0
Avatar
Tofu

kh様
juridon様

お世話になります、コメント等ありがとうございます。
ご説明頂いた内容に修正し、IDが保存できること確認できました。

徐々に理解しながら進め、他の勉強サイトでも並行して理解できればと
思います。
ありがとうございます。

0
サインインしてコメントを残してください。