【发布时间】:2019-05-15 08:22:09
【问题描述】:
我希望从源文件夹中的电子表格中导入行,该文件夹将使用新的电子表格每天更新。是否可以将源文件夹中每个新电子表格中的特定范围提取到主工作表中?
我一直在使用来自此处类似问题的答案的以下代码。除了复制已导入主表的数据外,这非常有效。我该如何解决这个问题?
function getdata() {
//declare multiple variables in one statement - Initial value will
//be undefined
var destinationSpreadsheet,destinationSS_ID,destsheet,destrange,file,files,
sourcerange,sourceSS,sourcesheet,srcSheetName,sourcevalues;
srcSheetName = "Type the Name of Source Sheet Tab Here";
destinationSS_ID = "Type the Name of destination spreadsheet file ID Here";
files = DriveApp.getFolderById("Folder ID").getFiles();
destinationSpreadsheet = SpreadsheetApp.openById(destinationSS_ID);
destsheet = destinationSpreadsheet.getSheetByName('Sheet1');
while (files.hasNext()) {
file = files.next();
if (file.getMimeType() !== "application/vnd.google-apps.spreadsheet") {
continue;
};
sourceSS = SpreadsheetApp.openById(file.getId());
sourcesheet = sourceSS.getSheetByName(srcSheetName);
//sourcesheet.getRange(start row, start column, numRows, number of Columns)
sourcerange = sourcesheet.getRange(2,1,sourcesheet.getLastRow()-1,6);
sourcevalues = sourcerange.getValues();
//Write all the new data to the end of this data
destrange = destinationSpreadsheet.getSheetByName("Sheet1")
.getRange(destsheet.getLastRow()+1,1,sourcevalues.length,sourcevalues[0].length);
destrange.setValues(sourcevalues);
};
};
【问题讨论】:
-
为了正确理解你的问题,能否提供你想要的输入输出样本?
-
我创建了一个示例,该示例具有从“数据文件”文件夹中的 google 工作表导入数据的主工作表。主表和数据文件表具有相同的列标题和表名称。在示例中,我已将上述脚本运行了 3 次。它可以工作,但是,我希望它避免导入已经导入的数据。 link
-
感谢您回复并提供示例电子表格。从他们那里,我提出了一个修改后的脚本。你能确认一下吗?如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
-
感谢 Tanaike,这正是我想做的。完美运行!
-
感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
标签: google-apps-script google-sheets import google-sheets-api