Google Sheets AppScript 将单元格导出到具有动态文件夹名称的 HTML 文件
Google Sheets AppScript Export Cell to HTML file with dynamic folder name
我目前有一个应用程序脚本,可以将单元格的内容导出到下面 google 个工作表中的 HTML 文件中:
function saveToTextfile() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
var rg = sh.getRange(1, 1, sh.getLastRow(), 2);
var vs = rg.getValues();
var folder = DriveApp.getFolderById('1rTOhLtYzFAtPH-NuO-uu7OXYH4Ri6vFK')
var files = folder.getFiles();
while (files.hasNext()) files.next().setTrashed(true);
vs.forEach(r => folder.createFile(r[0] + '.html', r[1]) );
}
这非常有效,但是,我想添加另一个步骤以将文件导出到文件夹名称,该文件夹名称也将基于单元格值。因此,例如,不是简单地导出文件“Index-1.html”、“Index-2.html”等,我想以这种方式导出“/1/index.html”、“/ 2/index.html”。我希望这是清楚的。
非常感谢任何帮助:)
尝试
function saveToTextfile() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
var rg = sh.getRange(1, 1, sh.getLastRow(), 2);
var vs = rg.getValues();
vs.forEach(r => DriveApp.getFolderById(getChildId('1rTOhLtYzFAtPH-NuO-uu7OXYH4Ri6vFK', r[0])).createFile('index.html', r[1]));
}
function getChildId(parentId, name) {
var parent = DriveApp.getFolderById(parentId);
var id;
var folders = parent.getFoldersByName(name);
if (folders.hasNext()) {
var folder = folders.next();
id = folder.getId();
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
if (file.getName() == 'index.html') { file.setTrashed(true) }
}
}
else {
var folder = parent.createFolder(name);
id = folder.getId();
}
return id;
}
我目前有一个应用程序脚本,可以将单元格的内容导出到下面 google 个工作表中的 HTML 文件中:
function saveToTextfile() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
var rg = sh.getRange(1, 1, sh.getLastRow(), 2);
var vs = rg.getValues();
var folder = DriveApp.getFolderById('1rTOhLtYzFAtPH-NuO-uu7OXYH4Ri6vFK')
var files = folder.getFiles();
while (files.hasNext()) files.next().setTrashed(true);
vs.forEach(r => folder.createFile(r[0] + '.html', r[1]) );
}
这非常有效,但是,我想添加另一个步骤以将文件导出到文件夹名称,该文件夹名称也将基于单元格值。因此,例如,不是简单地导出文件“Index-1.html”、“Index-2.html”等,我想以这种方式导出“/1/index.html”、“/ 2/index.html”。我希望这是清楚的。
非常感谢任何帮助:)
尝试
function saveToTextfile() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getActiveSheet();
var rg = sh.getRange(1, 1, sh.getLastRow(), 2);
var vs = rg.getValues();
vs.forEach(r => DriveApp.getFolderById(getChildId('1rTOhLtYzFAtPH-NuO-uu7OXYH4Ri6vFK', r[0])).createFile('index.html', r[1]));
}
function getChildId(parentId, name) {
var parent = DriveApp.getFolderById(parentId);
var id;
var folders = parent.getFoldersByName(name);
if (folders.hasNext()) {
var folder = folders.next();
id = folder.getId();
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
if (file.getName() == 'index.html') { file.setTrashed(true) }
}
}
else {
var folder = parent.createFolder(name);
id = folder.getId();
}
return id;
}