新規投稿
フォローする

レコードの保存ができません

https://developer.cybozu.io/hc/ja/articles/212208463-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E4%BF%9D%E5%AD%98%E5%BE%8C%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA%E3%82%92%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AB%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

上記のサイトを参考にscriptを組んでみたのですが、レコードの保存をしようとした際に何度保存ボタンを押しても実行されない、という現象が起きています。

scriptも初心者なので、なにが間違っているのかすらわかりません。

実行したい動作ですが、

Aフィールド:日付

Bフィールド:使用目的

Cフィールド:AとBとレコード番号を合わせた名前(A_B_レコード番号)

としたいです。

ご教授のほど、宜しくお願い致します。

0

8件のコメント

Avatar
ひよこ

こもるーさん

こんにちは。はじめまして。
ひよこです。

保存ボタンを押しても保存されないということですが、そのときに何かエラー出力されていませんか?
動かない?そんな時はデバッグをしてみよう!入門編 を参考に、ブラウザの開発者ツールでエラー表示されていないか、確認してみてください。

またエラーになったときのソースコードを貼り付けていただけると、アドバイスしやすいと思います。

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

ひよこにより編集されました
0
Avatar
こもるー

ひよこさん

初めまして。アドバイスありがとうございます。

エラーは「Uncaught SyntaxError: Unexpected token」と出ております。

あとスクリプトですが、下記にしました。

交通が目的ではありませんが、動かないので何が動かない原因なのか

区切ってやっていったところ、非活性処理だけはできることを確認しています。

ただし、繋げてやるとできなくなるので、後半部分のパスがおかしいのだと思っています。

宜しくお願い致します

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

// レコード追加、編集、一覧の編集画面の「申請No」非活性処理
var eventsShow = ['app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show'];
kintone.events.on(eventsShow, function(event) {

var record = event.record;
if (('app.record.create.show').indexOf(event.type) >= 0) {
record['Cフィールド']['value'] = "";
}
record['Cフィールド']['disabled'] = true;
return event;
});

//レコード追加画面の保存成功後イベント
kintone.events.on('app.record.create.submit.success', function(event) {
var record = event.record;
var appId = event.appId;
var recordId = event.recordId;
var createDate = moment(record["Aフィールド"]).format("YYYYMMDD");

//レコードの更新API
var body = {
"app": appId,
"id": recordId,
"record": {
"Cフィールド": {
"value": "交通" + createDate + "-" + recordId
}
}
};
return event;
});
});

こもるーにより編集されました
0
Avatar
w.y

ただただ最後の閉じ括弧が多いような気がしますけどね・・・。

最後の行の閉じ括弧をコメントアウトして実行してみてください。

1
Avatar
ひよこ

こもるーさん

ひよこです。
エラー内容とコードについて、ありがとうございます。

① Uncaught SyntaxError: Unexpected token

今回のエラーメッセージはシンタックスエラーです。「Unexpected token」は、往々にして、{ や ; などの JS の基本文法として必要な文字がないというパターンが多いです。
エラーメッセージが出ていた場合は、Google 検索をすると原因や解決策などが書いてあることが多いので、検索してみてください。

貼り付けていただいたソースコードを見ると、最後の }); が多いように見えます。

  return event;
});
}); // ← これが不要


シンタックスエラーは、jsFiddle(ブラウザで利用できます) や Visual Studio Code などの開発用エディタを使うと指摘してくれます。
ぜひそういったエディタを使うこともご検討ください。

 

②保存できない

app.record.create.submit.success イベントは、保存が成功した後=レコードが更新された後のイベントです。
今回、保存イベントの後にさらにCフィールドも更新したいので、レコード更新の REST API を使う必要があります。

貼っていただいたコードにはそれがありません。

参考にされた記事 https://developer.cybozu.io/hc/ja/articles/212208463 にも、最後の方にこういった記述があると思います。
この部分がレコード更新を行っている部分です。

    return kintone.api(kintone.api.url("/k/v1/record", true), "PUT", body).then(
function(resp) {
return event;
},
function(error) {
alert(error.message);
return event;
});
0
Avatar
こもるー

ひよこさん

丁寧に教えて頂いてありがとうございます。

なるほどですね。確かにかっことかすごく多かったですね。

上記のお返事を見て、またエラーを見つつ修正を加えていったところ、無事保存はできるようになりました。

そこで実際やりたかったことにシフトチェンジしたところ、今度は別のエラーとなってしまいました。

実際やりたい内容で、スクリプトを作成したので、理解が及ばなくて大変申し訳ないのですが、

もう少しご教授頂きたいです。

本来上記にあるように、

Aフィールド:日付

Bフィールド:使用目的

Cフィールド:AとBとレコード番号を合わせた名前(A_B_レコード番号)

としたいと思い、作成したスクリプトは下記となるのですが、これのエラーについては「Uncaught SyntaxError: missing ) after argument list」

ということでした。関数の呼び出し方にミスがあったり文字列のエスケープミスの可能性ということですが、やりたい動作は書けている気がすると思ったのですが、先に進めず。。

ご教授のほど、宜しくお願い致します。

-------------------------------------------------------------------------


// レコード追加、編集、一覧の編集画面の「申請No」非活性処理
var eventsShow = ['app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show'];
kintone.events.on(eventsShow, function(event) {

var record = event.record;
if (('app.record.create.show').indexOf(event.type) >= 0) {
record['Cフィールド']['value'] = "";
}
record['Cフィールド']['disabled'] = true;
return event;
});

//レコード追加画面の保存成功後イベント
kintone.events.on('app.record.create.submit.success', function(event) {
var record = event.record;
var appId = event.appId;
var recordId = event.recordId;
var createDate = moment(record["Aフィールド"]).format("YYYYMMDD");
var text = record['Bフィールド]['value'];
}
//レコードの更新API
var body = {
"app": appId,
"id": recordId,
"record": {
"Cフィールド": {
"value": createDate + "_" + text + "_" + recordId
}
}
};

return kintone.api(kintone.api.url("/k/v1/record", true), "PUT", body).then(
function(resp) {
return event;
});

0
Avatar
堀越 曉

こもるーさんはじめまして。

記載ミスとしては、

・Bフィールド後に「'」が抜けている

・その直後の「}」が不要で、それを削除して最後の行に「});」が必要

かと思います。

 

こもるーさんがどのような目的で開発しているのかわかりませんが、

Visual Studioなどのきちん記述エラーをチェックしてくれるツールを使用してコーディングしたほうが良いと思います。

1
Avatar
こもるー

堀越 曉さん

はじめましてこもるーです。

お返事ありがとうございます。

ご指摘、ご教授ともにありがとうございます。

上記で全く述べていなかったのですが、こちらの件急ぎでして、Visual Studioの使用許可申請を社内に出したのですが、

kintone構築設計をする人間が自分しかおらず許可がなかなか下りず。。

初心者なりにいろんなところで調べて今まではなんとかなってきたのですが、壁にぶつかってしまった次第です。

また、

・Bフィールド後に「'」が抜けている

・その直後の「}」が不要で、それを削除して最後の行に「});」が必要

とのことだったのですが、

Bフィールドの後に「'」は入っていて、「}」が不要で、それを削除して最後の行に「});」が必要を実行してみたのですが、

最初と同じ「Uncaught SyntaxError: Unexpected token」となってしまいました。

非活性についてはできるので、分析しつつやってみます。

長々すみませんでした。

 

 

 

0
Avatar
こもるー

w.yさん

はじめまして、こもるーです。

遅くなってしまいましたが、ご指摘ありがとうございました。

ご指摘のとおり、最後の行の閉じ括弧をコメントアウトしたのですが、ただ保存が成功するようになっただけ、という結果になってしまいました。

報告、また御礼が遅くなってしまったこと、大変申し訳ありませんでした。

こもるーにより編集されました
0
ログインしてコメントを残してください。