kintone에서 파일을 다운로드하여 Google 문서에 쓰기
소개
이번에는 아래와 같은 전 기사를 베이스로, 파일 다운로드와 Google Document에 기입하는 부분을 추기하고 있습니다.
Google Apps Script에서 OAuth 2.0에서 kintone API 사용
코드
전 기사의 코드와 다른 부분만 아래에 올려 둡니다.
function getService() {
'use strict';
const prop = PropertiesService.getScriptProperties(); // 固定値はプロパティストアから取得
const subDomain = prop.getProperty('SUBDOMAIN');
const clientId = prop.getProperty('KINTONE_OAUTH_CLIENT_ID');
const clientSecret = prop.getProperty('KINTONE_OAUTH_CLIENT_SECRET');
return OAuth2.createService('kintone')
.setAuthorizationBaseUrl(`https://${subDomain}.cybozu.com/oauth2/authorization`)
.setTokenUrl(`https://${subDomain}.cybozu.com/oauth2/token`)
.setClientId(clientId)
.setClientSecret(clientSecret)
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('k:app_record:read k:file:read'); // Kintone APIのスコープに k:file:read を追加
}
function createAndSendDocument(accessToken) {
'use strict';
const prop = PropertiesService.getScriptProperties();
const subDomain = prop.getProperty('SUBDOMAIN');
var appUrl = `https://${subDomain}.cybozu.com/k/v1/record.json?app=103&id=2`;
var appUrlFile = `https://${subDomain}.cybozu.com/k/v1/file.json`;
var doc = DocumentApp.create('Hello, world!');
// kintoneからレコード取得
function fetchRecord(url, token){
return new Promise(resolve => {
var response = UrlFetchApp.fetch(url,
{
headers: {
Authorization: 'Bearer ' + token
}
}
)
var result = JSON.parse(response.getContentText());
resolve(result);
})
}
// kintoneからファイルをダウンロードする
function fetchFile(url, token, fkey){
return new Promise(resolve => {
var options = {
'headers': {
'Authorization': 'Bearer ' + token
},
'muteHttpExceptions': true
};
try {
var response = UrlFetchApp.fetch(`${url}?fileKey=${fkey}`, options);
resolve(response);
}
catch (error) {
console.log('error =>', error);
}
})
}
fetchRecord(appUrl, accessToken) // レコード取得
.then(result => {
var subject = doc.getName();
doc.getBody().appendParagraph(subject + '\r\n' + result.record.message.value);
return fetchFile(appUrlFile, accessToken, result.record.file.value[0].fileKey); // ファイルダウンロード
})
.then(result => {
var blob = Utilities.newBlob(result.getContent());
doc.getBody().appendParagraph(result.getContentText());
doc.getBody().appendImage(blob); // ダウンロードしたファイルをGoogle Documentに書き込み
})
.catch(e => {
console.log('error =>', e);
});
}
킨톤 레코드
Google 문서
참고
전 기사의 코드와 다른 부분만 아래에 올려 둡니다.
function getService() {
'use strict';
const prop = PropertiesService.getScriptProperties(); // 固定値はプロパティストアから取得
const subDomain = prop.getProperty('SUBDOMAIN');
const clientId = prop.getProperty('KINTONE_OAUTH_CLIENT_ID');
const clientSecret = prop.getProperty('KINTONE_OAUTH_CLIENT_SECRET');
return OAuth2.createService('kintone')
.setAuthorizationBaseUrl(`https://${subDomain}.cybozu.com/oauth2/authorization`)
.setTokenUrl(`https://${subDomain}.cybozu.com/oauth2/token`)
.setClientId(clientId)
.setClientSecret(clientSecret)
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('k:app_record:read k:file:read'); // Kintone APIのスコープに k:file:read を追加
}
function createAndSendDocument(accessToken) {
'use strict';
const prop = PropertiesService.getScriptProperties();
const subDomain = prop.getProperty('SUBDOMAIN');
var appUrl = `https://${subDomain}.cybozu.com/k/v1/record.json?app=103&id=2`;
var appUrlFile = `https://${subDomain}.cybozu.com/k/v1/file.json`;
var doc = DocumentApp.create('Hello, world!');
// kintoneからレコード取得
function fetchRecord(url, token){
return new Promise(resolve => {
var response = UrlFetchApp.fetch(url,
{
headers: {
Authorization: 'Bearer ' + token
}
}
)
var result = JSON.parse(response.getContentText());
resolve(result);
})
}
// kintoneからファイルをダウンロードする
function fetchFile(url, token, fkey){
return new Promise(resolve => {
var options = {
'headers': {
'Authorization': 'Bearer ' + token
},
'muteHttpExceptions': true
};
try {
var response = UrlFetchApp.fetch(`${url}?fileKey=${fkey}`, options);
resolve(response);
}
catch (error) {
console.log('error =>', error);
}
})
}
fetchRecord(appUrl, accessToken) // レコード取得
.then(result => {
var subject = doc.getName();
doc.getBody().appendParagraph(subject + '\r\n' + result.record.message.value);
return fetchFile(appUrlFile, accessToken, result.record.file.value[0].fileKey); // ファイルダウンロード
})
.then(result => {
var blob = Utilities.newBlob(result.getContent());
doc.getBody().appendParagraph(result.getContentText());
doc.getBody().appendImage(blob); // ダウンロードしたファイルをGoogle Documentに書き込み
})
.catch(e => {
console.log('error =>', e);
});
}
킨톤 레코드
Google 문서
참고
참고
Reference
이 문제에 관하여(kintone에서 파일을 다운로드하여 Google 문서에 쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sy250f/items/5e5925479c283edd65dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)