【kintone】JavaScript로 레코드 일람을 CSV 파일로 출력해 보자
라고 생각하는 일이 있지요.
오늘은 JavaScript를 출력하는 기능을 만들어 봅시다.
조금 길고 무거워요 💦
앱 준비
kintone 앱 스토어에서 고객 목록을 '샘플 데이터 포함'을 선택하여 만듭니다.
자바스크립트
JavaScript 전체 코드는 여기
kintone 레코드 목록 CSV 파일 다운로드 스크립트
버튼 붙이기
이 기사를 참고로 버튼을 설치합니다.
【kintone】앱의 「스페이스」필드에 버튼을 설치한다
버튼의 기능 내용은 ↓과 같이 해 주세요.
//ボタンをクリックしたときの動作
btn.onclick=()=>{
//CSVダウンロード
dlCsv();
}
encoding.js
Cybozu CDN
↓여기를 「JavaScript/CSS로 커스터마이즈」의 설정에 추가해 둡니다.
htps : // js. cy 흐림. 코 m / 엔코 ぢ gjs / 1.0.30 / 엔코 ぢ g. 모두. js
CSV를 출력하는 기능 쓰기
↓ 이쪽을 참고로 kintone의 레코드를 CSV 파일에 기입하는 코드로 해 보았습니다.
해설은 나중에 설명합니다.
참고:
파일을 다운로드 저장하는 방법
브라우저에서 js의 배열을 csv로 다운로드합니다.
javascript로 문자 코드 변환
// 1.CSVファイル生成用
const HEADER =['会社名','部署名','担当者名','郵便番号','TEL'];//CSVに出力したいフィールドのフィールドコード
// CSVをダウンロード
const dlCsv = async ()=>{
//フィールド名からCSVの文字列データを作る
const setHeaderData = () => {
let headerData = '';
HEADER.forEach(h => {
headerData += h + ',';
});
headerData += '\r\n';
return headerData;
};
//レコードからCSVの文字列データを作る
const recordToCsvData = records => {
let rowData = '';
records.forEach(r => {
HEADER.forEach(h => {
rowData += r[h].value + ',';
});
rowData += '\r\n';
});
return rowData;
};
//URLエンコード
const createDataUriFromString = str => {
// 文字列を配列に変換
const array = str.split('').map(s => s.charCodeAt());
// エンコード
const sjis_array = Encoding.convert(array, 'SJIS', 'UNICODE');
const uInt8List = new Uint8Array(sjis_array);
return uInt8List;
};
//2. CSVにしたいレコードを取得する
const param_get = {
app:kintone.app.getId(),
//query:'出力フラグ != 1', // 絞り込みたいときはクエリを書く"出力フラグ = 0" など
};
const obj_get = await kintone.api('/k/v1/records','GET',param_get);
const targetRecords =obj_get.records;
//3. レコード1件以上だったらCSV出力
if (targetRecords.length > 0) {
//4. CSVにするテキストデータを作成
const str = createDataUriFromString( setHeaderData() + recordToCsvData(targetRecords));
//5. CSVファイル作成
const blob = new Blob([str], {type:"text\/csv"});
const url = URL.createObjectURL(blob);
//6. ダウンロード処理
const a = document.createElement("a");
document.body.appendChild(a);
a.download = "test.csv";//ここすきなファイル名に
a.href = url;
a.click();
a.remove();
URL.revokeObjectURL(url);
// // 出力フラグをONにするようなコードはこのへんに
// let param_records = [~,~, ~,~];
// const param_upd = {
// app:kintone.app.getId(),
// records:param_records,
// };
// const obj_put = await kintone.api('/k/v1/records','PUT',param_upd);
}
}
CSV 다운로드 흐름
거꾸로 해설입니다만, 흐름으로서는 이 순서로 실행합니다.
JavaScript 전체 코드는 여기
kintone 레코드 목록 CSV 파일 다운로드 스크립트
버튼 붙이기
이 기사를 참고로 버튼을 설치합니다.
【kintone】앱의 「스페이스」필드에 버튼을 설치한다
버튼의 기능 내용은 ↓과 같이 해 주세요.
//ボタンをクリックしたときの動作
btn.onclick=()=>{
//CSVダウンロード
dlCsv();
}
encoding.js
Cybozu CDN
↓여기를 「JavaScript/CSS로 커스터마이즈」의 설정에 추가해 둡니다.
htps : // js. cy 흐림. 코 m / 엔코 ぢ gjs / 1.0.30 / 엔코 ぢ g. 모두. js
CSV를 출력하는 기능 쓰기
↓ 이쪽을 참고로 kintone의 레코드를 CSV 파일에 기입하는 코드로 해 보았습니다.
해설은 나중에 설명합니다.
참고:
파일을 다운로드 저장하는 방법
브라우저에서 js의 배열을 csv로 다운로드합니다.
javascript로 문자 코드 변환
// 1.CSVファイル生成用
const HEADER =['会社名','部署名','担当者名','郵便番号','TEL'];//CSVに出力したいフィールドのフィールドコード
// CSVをダウンロード
const dlCsv = async ()=>{
//フィールド名からCSVの文字列データを作る
const setHeaderData = () => {
let headerData = '';
HEADER.forEach(h => {
headerData += h + ',';
});
headerData += '\r\n';
return headerData;
};
//レコードからCSVの文字列データを作る
const recordToCsvData = records => {
let rowData = '';
records.forEach(r => {
HEADER.forEach(h => {
rowData += r[h].value + ',';
});
rowData += '\r\n';
});
return rowData;
};
//URLエンコード
const createDataUriFromString = str => {
// 文字列を配列に変換
const array = str.split('').map(s => s.charCodeAt());
// エンコード
const sjis_array = Encoding.convert(array, 'SJIS', 'UNICODE');
const uInt8List = new Uint8Array(sjis_array);
return uInt8List;
};
//2. CSVにしたいレコードを取得する
const param_get = {
app:kintone.app.getId(),
//query:'出力フラグ != 1', // 絞り込みたいときはクエリを書く"出力フラグ = 0" など
};
const obj_get = await kintone.api('/k/v1/records','GET',param_get);
const targetRecords =obj_get.records;
//3. レコード1件以上だったらCSV出力
if (targetRecords.length > 0) {
//4. CSVにするテキストデータを作成
const str = createDataUriFromString( setHeaderData() + recordToCsvData(targetRecords));
//5. CSVファイル作成
const blob = new Blob([str], {type:"text\/csv"});
const url = URL.createObjectURL(blob);
//6. ダウンロード処理
const a = document.createElement("a");
document.body.appendChild(a);
a.download = "test.csv";//ここすきなファイル名に
a.href = url;
a.click();
a.remove();
URL.revokeObjectURL(url);
// // 出力フラグをONにするようなコードはこのへんに
// let param_records = [~,~, ~,~];
// const param_upd = {
// app:kintone.app.getId(),
// records:param_records,
// };
// const obj_put = await kintone.api('/k/v1/records','PUT',param_upd);
}
}
CSV 다운로드 흐름
거꾸로 해설입니다만, 흐름으로서는 이 순서로 실행합니다.
하나씩 봅니다.
1. 설정 상수
HEADER에 출력하고 싶은 필드의 필드 코드를 배열로 써 둡니다.
// CSVファイル生成用
const HEADER =['会社名','部署名','担当者名','郵便番号','TEL'];//CSVに出力したいフィールドのフィールドコード
2. CSV로 만들 레코드를 얻습니다.
출력하고 싶은 CSV의 근원이 되는 레코드를 취하러 갑니다.
여기서 앱에 '출력 플래그' 등을 준비해 두면 query에 미출력 레코드를 지정할 수 있습니다.
예를 들면
query:'出力フラグ != 1',
targetRecords = obj_get.records;
부분에 레코드 배열이 할당됩니다.참고 : 레코드 일괄 획득(쿼리에서 조건 지정)
//CSVにしたいレコードを取得する(1)
const param_get = {
app:kintone.app.getId(),
//query:'出力フラグ != 1', // 絞り込みたいときはクエリを書く
};
const obj_get = await kintone.api('/k/v1/records','GET',param_get);
const targetRecords = obj_get.records;
3. 레코드 1건 이상이면 CSV 출력
2.에서 취득한 레코드가 1건 이상이면 출력합시다
//レコード1件以上だったらCSV出力(2)
if (targetRecords.length > 0) { ~~
4. CSV로 만들 텍스트 데이터 만들기
위쪽에서 많이 정의하고 있는 CSV 작성을 위한 함수를 사용하고 있습니다.
함수들은 이쪽을 참고로 쓰고 있습니다.
참고:
브라우저에서 js의 배열을 csv로 다운로드합니다.
javascript로 문자 코드 변환
//CSVにするテキストデータを作成
const str = createDataUriFromString( setHeaderData() + recordToCsvData(targetRecords));
5. CSV 파일 생성
4. 에서 만든 str을 CSV ``파일''로 만듭니다.
5.6.은 ↓의 사이트를 참고로 하고 있습니다.
참고 : 파일을 다운로드 저장하는 방법
//CSVファイル作成(4)
const blob = new Blob([str], {type:"text\/csv"});
const url = URL.createObjectURL(blob);
6. 파일 다운로드 처리
다운로드할 때는 a 태그를 숨기고 클릭하여 삭제한다는 흐름이군요. 공부가 되었습니다.
//ダウンロード処理(5)
const a = document.createElement("a");
document.body.appendChild(a);
a.download = "test.csv";//ここすきなファイル名に
a.href = url;
a.click();
a.remove();
URL.revokeObjectURL(url);
요약
이번에는 어쨌든 다운로드 해 본다. 라는 구조를 소개했습니다.
궁리를 더하면, 「CSV 파일을 다운로드하면 플래그를 세운다」라고 하는 구조도 만들 수 있습니다.
코멘트 아웃 부분도 참고로 되면 좋을지도 모릅니다! ?
꼭 도전해보세요 ^ 0 ^
이상입니다.
Reference
이 문제에 관하여(【kintone】JavaScript로 레코드 일람을 CSV 파일로 출력해 보자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/juri_don/items/e7b21e155a7a6f84fee9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【kintone】JavaScript로 레코드 일람을 CSV 파일로 출력해 보자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/juri_don/items/e7b21e155a7a6f84fee9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)