先に書いた以下の続きです
Googleドライブのフォルダ構成
親フォルダ
└TEST3
└TEST2
└TEST1
└サンプル2
└サンプル1
└テキスト(ドキュメントのbody)
└説明(ファイルの説明)
サンプル1の中身
HtmlServiceでこのように表示したい
コード.gs
function doGet(e) {
return HtmlService.createHtmlOutputFromFile("index");
}
/************************************
getFoldersInFolder
************************************/
function getFoldersInFolder() {
const folderId = "親フォルダID";
const parentFolder = DriveApp.getFolderById(folderId);
const folders = parentFolder.getFolders();
let objs = [];
while(folders.hasNext()) {
const folder = folders.next();
const obj = {};
obj["name"] = folder.getName();
obj["id"] = folder.getId();
objs.push(obj);
}
return objs;
}
/************************************
getFilesInFolder
************************************/
function getFilesInFolder(folderId) {
const parentFolder = DriveApp.getFolderById(folderId);
const files = parentFolder.getFiles();
let objs = [];
while(files.hasNext()) {
const file = files.next();
const obj = {};
obj["name"] = file.getName();
obj["id"] = file.getId();
objs.push(obj);
}
return objs;
}
/************************************
getDataInFile
************************************/
function getDataInFile(fileId) {
const file = DriveApp.getFileById(fileId);
const obj = {};
obj["name"] = file.getName();
obj["id"] = file.getId();
obj["description"] = file.getDescription();
obj["text"] = getDocText(fileId)
return obj;
}
/************************************
getDocText
************************************/
function getDocText(fileId) {
const doc = DocumentApp.openById(fileId);
const body = doc.getBody().getText();
return body;
}
|
index.html
<!DOCTYPE html>
<html>
<body>
<div id="main">
<select id="folders_select"></select>
<br>
<select id="files_select"></select>
<br>
<textarea id="text"></textarea>
<textarea id="description"></textarea>
</div>
<script>
elem("folders_select").onchange = selectFolderChanged;
elem("files_select").onchange = selectFileChanged;
get_data();
/************************************
get_data()
************************************/
function get_data() {
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.getFoldersInFolder();
}
/************************************
onSuccess(result)
************************************/
function onSuccess(folders) {
const select = elem("folders_select");
for(let i = 0; i < folders.length; i++) {
const name = folders[i]["name"];
const id = folders[i]["id"];
console.log(name, id)
createSelectOptions(select, name, id);
}
}
/************************************
createSelectOptions
************************************/
function createSelectOptions(select, name, id) {
const option = document.createElement("option");
option.textContent = name;
option.setAttribute("id", id);
select.appendChild(option);
}
/************************************
selectFolderChanged
************************************/
function selectFolderChanged() {
const select = elem("folders_select");
const index = select.selectedIndex;
const id = select[index].id;
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccessFolderChanged)
.getFilesInFolder(id);
}
/************************************
selectFolderChanged
************************************/
function selectFileChanged() {
const select = elem("files_select");
const index = select.selectedIndex;
const id = select[index].id;
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccessFileChanged)
.getDataInFile(id);
}
/************************************
onSuccessFolderChanged
************************************/
function onSuccessFolderChanged(files) {
const select = elem("files_select");
for(let i = 0; i < files.length; i++) {
const name = files[i]["name"];
const id = files[i]["id"];
console.log(name, id)
createSelectOptions(select, name, id);
}
}
/************************************
onSuccessFileChanged
************************************/
function onSuccessFileChanged(data) {
console.log(data);
elem("text").value = data["text"];
elem("description").value = data["description"];
}
/************************************
onFailure(e)
************************************/
function onFailure(e) {
alert([e.message, e.stack]);
}
/************************************
elem(id)
************************************/
function elem(id) {
return document.getElementById(id);
}
</script>
</body>
</html>
|


