[英]When I try to fetch data from Google Sheets, if this data contains a date or time, it is not fetched into the Google app script
[英]Fetch data from multiple sheets using Google app script
试图从多个电子表格的. 所有工作表都存储在同一文件夹中。 必须按文件名仅从特定文件中获取一张主表中的数据。 我写了下面的脚本。 如果我们在指定范围内(在主工作表选项卡中)(getSheetByName) 仅输入一个文件名,它工作正常,但在尝试获取多个文件的数据时显示错误。 显示错误-“类型错误:无法读取未定义的属性‘长度’”下面是脚本-
function get_compiled_data() {
var filelist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FileName");
var filelists = filelist.getRange("A2:A").getValues();
var folder = DriveApp.getFolderById("1li9hBP_W5gPkb_ASKqin4j1ZGEn1Gvji");
var fileindex = folder.getFilesByName(filelists);
var file;
var filetype;
var sheetID;
var collect_data = [];
var data;
while (fileindex.hasNext()) {
file = fileindex.next();
filetype = file.getMimeType();
if (filetype === "application/vnd.google-apps.spreadsheet"){
sheetID = file.getId();
data = getData(sheetID);
data = data.map(function(r){return r.concat([file.getName()]);});
collect_data = collect_data.concat(data);
}
}
var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Compiled_Data");
target.getRange("A2:AX").clearContent();
target.getRange(2, 1, collect_data.length, collect_data[0].length).setValues(collect_data);
}
function getData (sheetID) {
var sheet = SpreadsheetApp.openById(sheetID);
var tab = sheet.getSheets()[0];
var data = tab.getRange("A3:AX" + tab.getLastRow()).getValues();
return data;
}
当您应该提供一个字符串时,您正在向getFilesByName(name)提供一个二维数组。 因此,代码永远不会进入while
块,并且collect_data
仍然是一个空数组,导致collect_data[0]
undefined
,并在尝试访问其length
时产生观察到的错误。
当您寻找单个文件名时,您可能正在使用getValue()
,它会检索单个值,它可以是一个字符串,可以在getFilesByName
中使用。 getValues()
返回一个二维数组,因此您应该调整您的代码,以便它遍历getValues()
返回的每个值。
编辑getValues()
行并按以下方式将getFilesByName
执行的所有操作包装在一个循环中:
function get_compiled_data() {
var filelist = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FileName");
var filelists = filelist.getRange(2, 1, filelist.getLastRow() - 1).getValues();
var folder = DriveApp.getFolderById("FOLDER-ID");
filelists.forEach(fileName => {
var fileindex = folder.getFilesByName(fileName[0]);
// Rest of code
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.