google-apps-script - 使用 App Script 将多个 Google 表格文件附加到一个 Google 表格中
问题描述
我在 Google Drive 的一个文件夹中有 100 个 Google Sheet 文件。每个 Google 工作表文件有 10 个工作表(A、B、C、D、E、F、G、H、I、J)。我想将所有 100 个 Google 表格文件附加到一个 Google 表格中,并从所有 100 个文件的“B”表格中附加数据。所有工作表都有相同的列。我试过下面的代码。但它会将 100 个文件中的所有“B”表拉到一张 Google 表中,但不会将表中的数据附加到一张中。
function myFunction()
{
var myFolder = DriveApp.getFolderById("1ZtxfMNDn3uFhCcdcp5unfmTwUIJ_3fZK");
var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet");
var newSpreadSheet = SpreadsheetApp.create("MergedNew");
while(spreadSheets.hasNext())
{
var sheet = spreadSheets.next();
var spreadSheet = SpreadsheetApp.openById(sheet.getId());
for(var y in spreadSheet.getSheets())
{
spreadSheet.getSheets()[y].copyTo(newSpreadSheet);
}
}
}
解决方案
解决方案:
function myFunction() {
var myFolder = DriveApp.getFolderById("1ZtxfMNDn3uFhCcdcp5unfmTwUIJ_3fZK");
var spreadSheets = myFolder.getFilesByType("application/vnd.google-apps.spreadsheet");
var master_files = DriveApp.getFilesByName("MergedNew")
if (master_files.hasNext()){
var master_file=master_files.next();
var newSpreadSheet = SpreadsheetApp.openById(master_file.getId());
}
else {
var newSpreadSheet = SpreadsheetApp.create("MergedNew");
newSpreadSheet.getSheets()[0].setName('B data');
}
var bSheet = newSpreadSheet.getSheetByName('B data');
while(spreadSheets.hasNext())
{
var sheet = spreadSheets.next();
var spreadSheet = SpreadsheetApp.openById(sheet.getId());
var sh = spreadSheet.getSheets()[1];
var data = sh.getRange(2,1,sh.getMaxRows(),sh.getMaxColumns()).getValues();
if (bSheet.getLastRow() == 0){
var headers = sh.getRange(1,1,1,sh.getMaxColumns()).getValues();
bSheet.getRange(1,1,1,sh.getMaxColumns()).setValues(headers);
}
bSheet.getRange(bSheet.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
}
解释:
- 我们遍历指定的特定文件夹中的所有电子表格文件
folderId
。 - 该脚本将创建一个名为 的新电子表格
MergedNew
。如果后者存在,那么它只会得到 现有的。此电子表格将包含上一步指定文件夹中所有电子表格文件的 B 表的所有数据。 - 然后它将每个 B 表的数据附加
B data
到MergedNew
. - 只有在您第一次运行脚本时,标头才会被复制到主文件中。
我在这里假设var sh = spreadSheet.getSheets()[1];
每个文件中的工作表 B 位于第二个位置。即,(A,B,C,D,E,F,G,H,I,J)
。
推荐阅读
- python - Python 读取 cp1252 文件
- angular - 角材料日期选择器在错误的位置打开
- java - 在 java 中的 AWS KinesisAsyncClient 下配置代理
- flutter - 如何解决构建失败并出现异常?
- c++ - 使用 std::cout 打印分配给十六进制值的字符时的奇怪输出
- go - 如何在 Go 中关闭 Github 问题
- html - CSS-grid:在命名列内自动放置(全宽元素居中布局)
- azure - Terraform DSC 配置与节点配置中的 Azure 自动化
- javascript - 在秒表上输入两位数
- c# - 正确配置后如何解决此路由问题?