如何解决使用应用脚本将多个Google表格文件追加到一个Google表格中
我在Google云端硬盘的一个文件夹中有100个Google表格文件。每个Google工作表文件都有10个工作表(A,B,C,D,E,F,G,H,I,J)。我想将所有100个Google表格文件附加到一个Google表格中,以附加所有100个文件的“ B”表格中的数据。所有工作表都有相同的列。我试过下面的代码。但这会将所有“ B”工作表从100个文件中提取到一个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,sh.getMaxColumns()).getValues();
bSheet.getRange(1,sh.getMaxColumns()).setValues(headers);
}
bSheet.getRange(bSheet.getLastRow()+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)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。