我正在尝试在Google表格中创建一个自定义脚本,用于在Google云端硬盘中创建文本文件。
工作表名称将是文件夹名称,列A中的值将是文本文件名称,列B中的值将是插入文本文件的文本。
我已经成功创建了它,但是我在扩展它时遇到问题,为每一行创建一个新文件并执行多个工作表。
如何在添加新工作表或新行时调整代码以创建其他文件夹和文件?
这是我到目前为止所做的:
function export() {
var sheet = SpreadsheetApp.getActiveSheet();
var filename = sheet.getRange(1, 1).getValue();
var foldername = sheet.getSheetName();
Logger.log('Filename = ' + filename + ' Foldername = ' + foldername);
var pFIT = DriveApp.getRootFolder().getFoldersByName(foldername);
var parentFolder, File ;
if (pFIT.hasNext())
parentFolder= pFIT.next();
if (parentFolder==null) {
parentFolder = DriveApp.getRootFolder().createFolder(foldername);
}
var existing = parentFolder.getFilesByName(filename);
if (existing.hasNext()) {
var file = existing.next();
if (file.getName() === filename) {
file.setTrashed(true);
}
}
var values = sheet.getRange(1, 2).getValues();
var text = values.map(function (a) {return a.join('\t');}).join('\r\n');
parentFolder.createFile(filename, text, MimeType.PLAIN_TEXT);
}
以下是我在运行脚本时要完成的任务:
屏幕截图1
屏幕截图2
屏幕截图3
答案 0 :(得分:0)
这次修改怎么样?作为基本方向,我通过检查文件夹和文件的重复来修改您的脚本。
function export() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (var i in sheets) {
var name = sheets[i].getSheetName();
var fo = DriveApp.getFoldersByName(name);
var folder = fo.hasNext() ? fo.next() : DriveApp.getRootFolder().createFolder(name);
var values = sheets[i].getDataRange().getValues();
values.shift();
var filename, text;
for (var j in values) {
[filename, text] = values[j];
folder.getFilesByName(filename).hasNext() || folder.createFile(filename, text, MimeType.PLAIN_TEXT);
}
}
}
如果这不是您想要做的,请告诉我。我想修改。