我正在研究如何做我需要的事情,我发现this video并认为这对我来说是完美的。
它显示了如何在页面上设置脚本以导入整个文件夹,这正是我需要的。我有14张相同的纸张。我需要将A2:F
从所有这些复制到一张表中。这是脚本:
function getdata() {
var files = DriveApp.getFolderById("0B94fkeHjleasRF9QMDFlcHllRVU").getFiles()
while (files.hasNext()) {
var file = files.next();
var shoot = SpreadsheetApp.openById(file.getId());
var sourcesheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
var sourcerange = sourcesheet.getRange('A2:F');
var sourcevalues = sourcerange.getValues();
var destsheet = shoot.getSheetByName('Sheet1');
var destrange = destsheet.getRange('A2:F');
destrange.setValues(sourcevalues);
}
}
问题是:虽然它在视频中起作用,但我似乎无法让它为我工作。我玩了最后一行(我收到错误的地方)。我设法让脚本删除我需要复制的所有信息。大声笑。显然我需要帮助。任何人都可以在这个剧本中看到任何明显的错误吗?
我尝试了importRange
,但它挂起了数组公式。这个脚本看起来很完美,只要我能让它发挥作用。
答案 0 :(得分:2)
此代码:
要使此代码生效,您必须输入文件夹ID,源表格标签名称和目标电子表格文件ID。
代码:
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);
};
};