![](/img/trans.png)
[英]Searching for a Google-apps-script to iterate through a folder of sheets and append a range of data to a consolidated master sheet
[英]Google Sheets: Import folder range into Master Sheet
我希望從源文件夾中的電子表格中導入行,該文件夾每天都會使用新的電子表格進行更新。 是否可以將源文件夾中每個新電子表格中的特定范圍拉入母版表?
我一直在使用以下代碼從這里回答類似的問題。 除了復制已經導入到母版表中的數據之外,這非常完美。 我怎樣才能解決這個問題?
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);
};
};
如果我的理解是正確的,那么該修改如何? 修改后的腳本流程如下。 請認為這只是幾個答案之一。
function getdata() {
var masterSpreadsheetId = "###"; // Spreadsheet ID of "MASTER" spreadsheet.
var folderId = "###"; // Folder ID including "Data File" files.
var dataFileSheetName = "Sheet1";
var files = DriveApp.getFolderById(folderId).getFiles();
var masterSpreadsheet = SpreadsheetApp.openById(masterSpreadsheetId);
var destSheet = masterSpreadsheet.getSheetByName('Sheet1');
var destSheetValues = destSheet.getRange(2, 1, destSheet.getLastRow() - 1, 6).getValues();
var values = [];
while (files.hasNext()) {
var file = files.next();
if (file.getMimeType() !== "application/vnd.google-apps.spreadsheet") continue;
var dataFileSS = SpreadsheetApp.openById(file.getId());
var dataFileSheet = dataFileSS.getSheetByName(dataFileSheetName);
var dataFileValues = dataFileSheet.getRange(2, 1, dataFileSheet.getLastRow()-1, 6).getValues();
Array.prototype.push.apply(values, dataFileValues);
};
var res = values.filter(function(e) {
return !destSheetValues.some(function(f) {
return e.every(function(g, k) {
var temp = f[k];
if (k < 2) {
g = new Date(g).getTime();
temp = new Date(temp).getTime();
}
return g == temp;
});
});
});
if (res.length > 0) destSheet.getRange(destSheet.getLastRow()+1,1,res.length,res[0].length).setValues(res);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.