お世話になります。全くの初心者です。
関連レコードデータをCSV出力したいです。
Tipsで下記のsampleコードを見つけて、現在使用しているアプリのフィールドコードに差し替えて使用してみたのですが、ボタンすら作成できません。
※ちなみにここで使用されているsampleアプリをインストールして試したところ、sampleアプリでは動作が確認できています。
現在使用しているアプリではフィールドコードが日本語のため、フィールドコードは全てで囲みました。
実際のフィールドコードに変更しなければいけない箇所は全て変更したつもりです。
以下、置き換えたコードです。
間違っている箇所など、教えていただけないでしょうか。
よろしくお願いいたします。
/*
* related records sample program
* Copyright (c) 2014 Cybozu
*
* Licensed under the MIT License
*/
(() => {
'use strict';
kintone.events.on('app.record.index.show', (event) => {
const records = event.records;
const appId = kintone.app.getRelatedRecordsTargetAppId('[名前重複確認]');
// ボタンの有無をチェック
if (document.getElementById('btn-export-csv')) {
return;
}
const spaceEl = kintone.app.getHeaderMenuSpaceElement();
const CSVButtonEl = document.createElement('button');
CSVButtonEl.textContent = 'CSVファイル出力';
CSVButtonEl.id = 'btn-export-csv';
spaceEl.appendChild(CSVButtonEl);
CSVButtonEl.addEventListener('click', () => {
getMakeCsv(appId, records).then((resp) => {
downloadFile(resp);
});
});
});
// csvデータの作成
const getMakeCsv = (appId, customerRecords) => {
// 同じ会社名の関連レコードを取得
const fetchRelatedRecords = (opt_index, opt_data) => {
const index = opt_index || 0;
const data = opt_data || [];
const customerRecord = customerRecords[index];
const acompany = customerRecord.[取引先名].value;
const amanager = customerRecord.[担当者名].value;
const adepartment = customerRecord.[部署].value;
const apost = customerRecord.[役職].value;
const duplication = customerRecord.[重複件数].value;
const amail = customerRecord.[メールアドレス].value;
const asubmail = customerRecord.[subメールアドレス].value;
const aprefectures = customerRecord.[都道府県].value;
const acity = customerRecord.[市区郡].value;
const atown = customerRecord.[町名・番地].value;
const atell = customerRecord.[電話].value;
const aphone = customerRecord.[携帯].value;
const asansan = customerRecord.[sansan人物ID].value;
const query = `[取引先名] = "${[取引先名]}"`; // 会社名をキーに該当関連レコードを取得
const params = {
app: appId,
query: query
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params)
.then((resp) =>{
const row = [ [取引先名], [担当者名], [部署], [役職], [重複件数], [メールアドレス], [subメールアドレス], [都道府県], [市区郡], [町名・番地], [電話], [携帯] ,[sansan人物ID] ];
const relatedRecords = resp.records;
if (relatedRecords.length > 0) {
relatedRecords.forEach((relatedRecord) => {
row.push(relatedRecord.[ユーザー選択].value);
row.push(relatedRecord.[取引先ID_自動採番].value);
});
}
data.push(row.join(','));
if (customerRecords.length > index + 1) {
return fetchRelatedRecords(index + 1, data);
}
return data;
});
};
const header ='取引先名', '担当者名', '部署', '役職', '重複件数', 'メールアドレス', 'subメールアドレス', '都道府県', '市区郡', '町名・番地', '電話', '携帯', 'sansan人物ID', '取引先ID_自動採番', `ユーザー選択`].join(',');
let csvData = [header];
return new kintone.Promise((resolve, reject) => {
fetchRelatedRecords().then((resp) => {
csvData = csvData.concat(resp);
resolve(csvData);
});
});
};
// ダウンロード関数
const downloadFile = (data) => {
const csv = data.join('\r\n');
// ファイル名
const filename = `client_case${getTimeStamp()}.csv`;
// Blob準備
const bom = new Uint8Array([0xef, 0xbb, 0xbf]);
const blob = new Blob([bom, csv], {type: 'text/csv'});
if (window.navigator.msSaveBlob) {
window.navigator.msSaveBlob(blob, filename);
} else {
const e = new MouseEvent('click', {view: window, bubbles: true, cancelable: true});
const url = window.URL || window.webkitURL;
const blobUrl = url.createObjectURL(blob);
const a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
a.href = blobUrl;
a.download = filename;
a.dispatchEvent(e);
}
};
// ファイル名に付与する日付の取得
const getTimeStamp = () => {
const d = new Date();
const YYYY = d.getFullYear();
let MM = d.getMonth() + 1;
let DD = d.getDate();
let hh = d.getHours();
let 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}`;
}
return `${YYYY}${MM}${DD}${hh}${mm}`;
};
})();コードをここに入力または貼り付け