いつもとても参考にさせていただいております。
アプリのレコード一覧画面にCSV出力ボタンを設置し、そのボタンを押すと、レコードをCSV出力、レコードの項目を更新する、という一連の処理をkintoneのREST API、Javascriptを使用して実装しようとしております。
CSVの出力までは問題なく行えて、エラーも出ずにレスポンスでレコードのリビジョンが上がるのですが、肝心のレコードの項目更新がされず困っております。
いろいろ調べて試してみたのですが、さっぱり解決の糸口がつかめないため、お知恵を貸していただけますと助かります。
以下、長いですがほぼそのままのコードになります。
よろしくお願いいたします。
(function() {
‘use strict’;
var CSVButtonEl;
kintone.events.on(‘app.record.index.show’, function (event) {
//変数の定義
var records = event.records;
console.log(records);
//CSV用フィールドコード
var seikyu_code, user_name, A, depart, dest, B, C = “”;
var postal_code, prefect, address, building, phone = “”;
var D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c = “”;
//function requestで使う変数
var resp = [];
var query = “”;
var app_id = kintone.app.getRelatedRecordsTargetAppId(‘reference’);
//csvの配列
var csv = [];
//ボタンの有無をチェック
if (!CSVButtonEl) {
setBtn();
CSVButtonEl.addEventListener(‘click’, toClick);
}
//ボタンエレメントの生成
function setBtn() {
var spaceEl = kintone.app.getHeaderMenuSpaceElement();
var text = document.createTextNode(‘CSV出力’);
CSVButtonEl = document.createElement(‘button’);
CSVButtonEl.appendChild(text);
spaceEl.appendChild(CSVButtonEl);
}
//クリックした際の処理
function toClick() {
getMakeCsv();
downloadFile(csv);
console.log(‘ok’);
exportFlag();
}
function getMakeCsv() {
//現在のレコード情報を取得
csv += [‘請求先コード’,‘請求先名’,‘請求先部署番号’,‘請求先部署名’,‘宛名1’,‘宛名2’,‘宛名3’,‘郵便番号’,‘都道府県’,‘地区町村番地’,‘建物名’,‘電話番号’,‘請求書テンプレート’,‘決済手段’,‘振込元口座名義’,‘会計ソフト連携用請求先部署コード’,‘CC送信先メールアドレス’,‘請求元担当者コード’,‘メモ’,‘請求先部署コード’,‘合計請求書_請求先コード’,‘合計請求書_請求先部署番号’,‘合計請求書_請求先部署コード’,‘請求方法’,‘請求書発行日_月’,‘請求書発行日_日’,‘請求書送付予定日_月’,‘請求書送付予定日_日’,‘決済期限_月’,‘決済期限_日’,‘請求元銀行振込パターンコード’,‘決済情報番号’,‘決済情報コード’,‘決済情報名’,‘請求先部署売掛金補助科目コード’,‘請求先部署前受金補助科目コード’,‘請求先部署仮受金補助科目コード’,‘手数料自動消込許容金額’, ‘’];//1行目の項目名は手動で設ける必要がある
for (var i = 0; i < records.length; i++) {
seikyu_code = records[i].seikyu_code.value;
user_name = records[i].user_name.value;
A = records[i].A.value;
depart = records[i].depart.value;
dest = records[i].dest.value;
B = records[i].B.value;
C = records[i].C.value;
postal_code = records[i].postal_code.value;
prefect = records[i].prefect.value;
address = records[i].address.value;
building = records[i].address.value;
phone = records[i].phone.value;
D = records[i].D.value;
E = records[i].E.value;
F = records[i].F.value;
G = records[i].G.value;
H = records[i].H.value;
I = records[i].I.value;
J = records[i].J.value;
K = records[i].K.value;
L = records[i].L.value;
M = records[i].M.value;
N = records[i].N.value;
O = records[i].O.value;
P = records[i].P.value;
Q = records[i].Q.value;
R = records[i].R.value;
S = records[i].S.value;
T = records[i].T.value;
U = records[i].U.value;
V = records[i].V.value;
W = records[i].W.value;
X = records[i].X.value;
Y = records[i].Y.value;
Z = records[i].Z.value;
a = records[i].a.value;
b = records[i].b.value;
c = records[i].c.value;
//CSVファイルに上記で取得したデータを記入していく
csv += seikyu_code +‘,’+ user_name +‘,’+ A +‘,’+ depart +‘,’+ dest +‘,’+ B +‘,’+ C +‘,’+ postal_code +‘,’+ prefect +‘,’+ address +‘,’+ building +‘,’+ phone +‘,’+ D +‘,’+ E +‘,’+ F +‘,’+ G +‘,’+ H +‘,’+ I +‘,’+ J +‘,’+ K +‘,’+ L +‘,’+ M +‘,’+ N +‘,’+ O +‘,’+ P +‘,’+ Q +‘,’+ R +‘,’+ S +‘,’+ T +‘,’+ U +‘,’+ V +‘,’+ W +‘,’+ X +‘,’+ Y +‘,’+ Z +‘,’+ a +‘,’+ b +‘,’+ c +‘,’+ ‘’;
}
}
function request(app_id, query){
var appUrl = kintone.api.url(‘/k/v1/records’) + ‘?app=’ + app_id + ‘&query=’ + query;
var respdata = JSON.parse(xmlHttp.responseText);
return respdata;
}
//ダウンロード関数
function downloadFile(csv) {
//ファイル名の設定
var filename = ‘CSV_’ + getTimeStamp() + ‘.csv’;
//Blob準備
var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
var blob = new Blob([bom, csv], {type: ‘text/csv’});
if (window.navigator.msSaveBlob) {
window.navigator.msSaveBlob(blob, filename);
} else {
var url = (window.URL || window.webkitURL);
var blobUrl = url.createObjectURL(blob);
var e = document.createEvent(‘MouseEvents’);
e.initMouseEvent(‘click’, true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var a = document.createElementNS(“http://www.w3.org/1999/xhtml”, “a”);
a.href = blobUrl;
a.download = filename;
a.dispatchEvent(e);
}
}
//エクスポート済みフラグを立てる
function exportFlag() {
var records = event.records;
var appId = kintone.app.getId();
var params = {
“app” : appId ,
“records” : []
};
for (let j = 0; j < records.length; j++) {
params.records[j] = {
“id” : records[j].$id.value ,
“export_flag” : {
“value” : [“済”]
}
};
}
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, params , function(resp) {
console.log(resp);
/*location.reload();*/
}, function(err) {
console.log(err);
});
}
//ファイル名に付与する日付の取得
function getTimeStamp() {
var d = new Date();
var YYYY = d.getFullYear();
var MM = (d.getMonth() + 1);
var DD = d.getDate();
var hh = d.getHours();
var mm = d.getMinutes();
if (MM < 10) { MM = ‘0’ + MM; }
if (DD < 10) { DD = ‘0’ + DD; }
if (hh < 10) { hh = ‘0’ + hh; }
else if (mm < 10) { mm = ‘0’ + mm; }
String();
return ‘’ + YYYY + MM + DD + hh + mm;
}
});
})();
【参考にさせていただいたサイト】