Google 将 GDrive 文件夹中的所有 csv 文件复制为现有 'master' Google sheet 中的新 sheet 的脚本
Google Script to copy all csv files in a GDrive Folder as new sheets in existing 'master' Google sheet
在我的 google 驱动器中,我有一个 'master' google 工作 sheet 和一个子文件夹,其中添加了 1 到 20 个 .csv 文件.我正在尝试编写我的 google 应用程序脚本以获取文件夹中的每个 .csv 文件并将它们作为单独的 sheet 添加到 'master' 工作 sheet 中,每个选项卡 sheet 的名称与 .csv 文件的名称相同。
示例场景:将 3 个 .csv 文件添加到子文件夹(alpha.csv、bravo.csv、charlie.csv)后,我们 运行 来自 'master' google sheet,它添加了 3 个选项卡(名称:alpha、charlie、bravo)以及相应 sheet 上的所有相应数据。
到目前为止,我的代码将获取文件名并为每个具有正确名称的文件创建 sheets。我已经尝试在这里进行研究并且正在努力解决数据导入部分。
这就是我必须让新标签和名称匹配的东西
// works to make a new sheet that is named to match the sheets inside of the folder
function runScript() {
var folder = DriveApp.getFolderById("googlefolderIDhere");
var fileIterator = folder.getFiles();
var file;
var fn;
var fileType;
var fileID;
var listSS = SpreadsheetApp.getActiveSpreadsheet();
while(fileIterator.hasNext()){
file = fileIterator.next();
fn = file.getName();
fileID = file.getId();
fileType = file.getMimeType();
if(fileType === "text/csv"){
listSS.insertSheet(fn);
}
}
}
我找到了这个获取数据的代码
但不知道如何使用上面的代码
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
使用从 parseCsv
获得的二维数组加载 sheet
function runScript() {
const ss = SpreadsheetApp.getActive()
const folder = DriveApp.getFolderById("googlefolderIDhere");
const files = folder.getFiles();
while (files.hasNext()) {
let file = files.next();
let fn = file.getName();
let fileID = file.getId();
let fileType = file.getMimeType();
if (fileType === "text/csv") {
let vs = Utilitiesl.parseCsv(file.getBlob().getDataAsString());
let sh = ss.insertSheet(fn);
if(sh) {
sh.getRange(1, 1, vs.length, vs[0].length).setValues(vs);
}
}
}
}
在我的 google 驱动器中,我有一个 'master' google 工作 sheet 和一个子文件夹,其中添加了 1 到 20 个 .csv 文件.我正在尝试编写我的 google 应用程序脚本以获取文件夹中的每个 .csv 文件并将它们作为单独的 sheet 添加到 'master' 工作 sheet 中,每个选项卡 sheet 的名称与 .csv 文件的名称相同。
示例场景:将 3 个 .csv 文件添加到子文件夹(alpha.csv、bravo.csv、charlie.csv)后,我们 运行 来自 'master' google sheet,它添加了 3 个选项卡(名称:alpha、charlie、bravo)以及相应 sheet 上的所有相应数据。
到目前为止,我的代码将获取文件名并为每个具有正确名称的文件创建 sheets。我已经尝试在这里进行研究并且正在努力解决数据导入部分。
这就是我必须让新标签和名称匹配的东西
// works to make a new sheet that is named to match the sheets inside of the folder
function runScript() {
var folder = DriveApp.getFolderById("googlefolderIDhere");
var fileIterator = folder.getFiles();
var file;
var fn;
var fileType;
var fileID;
var listSS = SpreadsheetApp.getActiveSpreadsheet();
while(fileIterator.hasNext()){
file = fileIterator.next();
fn = file.getName();
fileID = file.getId();
fileType = file.getMimeType();
if(fileType === "text/csv"){
listSS.insertSheet(fn);
}
}
}
我找到了这个获取数据的代码 但不知道如何使用上面的代码
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
使用从 parseCsv
获得的二维数组加载 sheetfunction runScript() {
const ss = SpreadsheetApp.getActive()
const folder = DriveApp.getFolderById("googlefolderIDhere");
const files = folder.getFiles();
while (files.hasNext()) {
let file = files.next();
let fn = file.getName();
let fileID = file.getId();
let fileType = file.getMimeType();
if (fileType === "text/csv") {
let vs = Utilitiesl.parseCsv(file.getBlob().getDataAsString());
let sh = ss.insertSheet(fn);
if(sh) {
sh.getRange(1, 1, vs.length, vs[0].length).setValues(vs);
}
}
}
}