前提・実現したいこと
お世話になります。
初心者ながら失礼致します。
現在、kintone JSを使ってCSVインポートを行いたいと考えております。
実現したいことに関しては、下記の通りです。
1/ CSVインポートを行う。CSV外部ファイルをインポートする。主キーは、【quote_number】
2/ POSTボタンを押下した時点で、quote_numberがある場合は、上書きを行い、
ない場合は、新規で登録したい。
こういった処理が初めてなことで、色々と学びながら実現をしたいです。
ご教示頂けましたら幸いです。宜しくお願いいたします。
該当のソースコード
javascript
1jQuery.noConflict(); 2(function ($) { 3 "use strict"; 4 5 kintone.events.on(['app.record.index.show'], function (event) { 6 var appId = event.appId; 7 8 //ダイアログでファイルが選択された時の処理 9 $('#selfile').bind('change', function (evt) { 10 //読み込んだファイルをテキストエリアに表示 11 var reader = new FileReader(); 12 reader.readAsText(evt.target.files[0]); 13 reader.onerror = function () { 14 alert('ファイル読み取りに失敗しました') 15 } 16 reader.onload = function (ev) { 17 $('textarea[name=\"txt\"]').val(reader.result); 18 }; 19 }); 20 //「post」ボタン押下時の処理 21 $('#post_btn').bind('click', function () { 22 var text_val = $('textarea[name=\"txt\"]').val(); 23 text_val = text_val.replace(/"/g, ""); 24 var jsonArray = csv2json(text_val.split('\n')); 25 var obj = []; 26 var j = 0; 27 for (var i = 0; i < jsonArray.length; i++) { 28 if (jsonArray[i]['quote_number']) { 29 j++ 30 obj[j - 1] = { 31 'app': appId, 32 'records': [{ 33 'quote_number': { 34 type: 'SINGLE_LINE_TEXT', 35 value: jsonArray[i]['quote_number'] 36 }, 37 'contract_amount' : { 38 type: 'NUMBER', 39 value: jsonArray[i]['contract_amount'] 40 } 41 }] 42 } 43 } 44 } 45 if (window.confirm('データを登録します。よろしいでしょうか?')) { 46 // ログアプリへの登録処理 47 kintone.api('/k/v1/records', 'POST', { 48 app: appId, 49 records: obj 50 }, function (resp) { 51 location.reload(); 52 }); 53 } else { 54 window.alert('キャンセルされました'); // 警告ダイアログを表示 55 } 56 }); 57 //パース処理 58 function csv2json(csvArray) { 59 var jsonArray = []; 60 var items = csvArray[0].split(','); 61 for (var i = 1; i < csvArray.length; i++) { 62 var a_line = {}; 63 var csvArrayD = csvArray[i].split(','); 64 // 各データをループ処理する 65 for (var j = 0; j < items.length; j++) { 66 //要素名:items[j] 67 //データ:csvArrayD[j] 68 a_line[items[j]] = csvArrayD[j]; 69 } 70 jsonArray.push(a_line); 71 } 72 return jsonArray; 73 } 74 }); 75})(jQuery);
試したこと
一つ一つ考えるために、上記のコードにしてみました。
その後デバック操作で確認をしてみましたら、登録処理の箇所でエラーが発生しておりました。
補足情報
下記のコードにすることで、まずは外部のCSVファイルのインポート(POST)は出来ました。
javascript
1jQuery.noConflict(); 2(function ($) { 3 "use strict"; 4 5 kintone.events.on(['app.record.index.show'], function (event) { 6 var appId = event.appId; 7 8 //ダイアログでファイルが選択された時の処理 9 $('#selfile').bind('change', function (evt) { 10 //読み込んだファイルをテキストエリアに表示 11 var reader = new FileReader(); 12 reader.readAsText(evt.target.files[0]); 13 reader.onerror = function () { 14 alert('ファイル読み取りに失敗しました') 15 } 16 reader.onload = function (ev) { 17 $('textarea[name=\"txt\"]').val(reader.result); 18 }; 19 }); 20 //「post」ボタン押下時の処理 21 $('#post_btn').bind('click', function () { 22 var text_val = $('textarea[name=\"txt\"]').val(); 23 text_val = text_val.replace(/"/g, ""); 24 var jsonArray = csv2json(text_val.split('\n')); 25 var obj = [] 26 for (var i = 0; i < jsonArray.length; i++) { 27 if (jsonArray[i]['quote_number']) { 28 obj[i] = { 29 'quote_number': { 30 value: jsonArray[i]['quote_number'] 31 }, 32 'contract_amount': { 33 value: jsonArray[i]['contract_amount'] 34 }, 35 36 } 37 } 38 } 39 if (window.confirm('データを登録します。よろしいでしょうか?')) { 40 // ログアプリへの登録処理 41 kintone.api('/k/v1/records', 'POST', { 42 app: appId, 43 records: obj 44 }, function (resp) { 45 location.reload(); 46 }); 47 } else { 48 window.alert('キャンセルされました'); // 警告ダイアログを表示 49 } 50 }); 51 //パース処理 52 function csv2json(csvArray) { 53 var jsonArray = []; 54 var items = csvArray[0].split(','); 55 for (var i = 1; i < csvArray.length; i++) { 56 var a_line = {}; 57 var csvArrayD = csvArray[i].split(','); 58 // 各データをループ処理する 59 for (var j = 0; j < items.length; j++) { 60 //要素名:items[j] 61 //データ:csvArrayD[j] 62 a_line[items[j]] = csvArrayD[j]; 63 } 64 jsonArray.push(a_line); 65 } 66 return jsonArray; 67 } 68 }); 69})(jQuery);

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。