将一张图纸的值复制到多个文件夹中的多个电子表格中



我有一个代码,可以从一张工作表中复制数据,并将其粘贴到另一个电子表格中的另一个工作表中。但是,我想将数据粘贴到我保存在多个文件夹(带子文件夹(中的多个电子表格中,并且在这些电子表格中我想要粘贴的工作表已经存在,但它已经过时了。我想从每个子文件夹中检索谷歌工作表电子表格,并将更新后的数据粘贴到所有子文件夹的同一工作表中。这是我的代码:

function copy_end(){
var carpetas = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('carpetas');  
var pegar = SpreadsheetApp.OpenbyId("ID").getSheetByName('carpetas'); //here I would like to paste the data to the sheet carpeta in multiple spreadsheets 
var firstrow= 0;
var lastrow =carpetas.getLastRow();
var rows= lastrow-firstrow;
var Range = carpetas.getRange(1,1,rows,4);
var DataCopied = Range.getValues();
// I defined the variables for better understanding      
var startRow = pegar.getLastRow()+1; // +1 because remember that while a range index starts at 1, 1, the JavaScript array will be indexed from [0][0].
var startColumn = 1;
var numRows = DataCopied.length;
var numColumns = DataCopied[0].length;
pegar.getRange(startRow, startColumn, numRows, numColumns).setValues(DataCopied);
}}

有人知道我如何将多个文件夹添加到脚本中吗?感谢您的帮助。提前感谢:(

答案:

假设有两个级别的文件夹(父文件夹和它们的直属子文件夹(,我建议使用以下工作流:

  • 获取父文件夹ID的数组(下面示例中的folderIds(
  • 对于每个文件夹id,获取相应的folder并通过folder.getFolders获取其子文件夹。在数组中获取所有这些子文件夹及其父文件夹
  • 使用folder.getFilesByType遍历子文件夹及其父文件夹的阵列,并查找位于其中任何子文件夹中的电子表格
  • 对于每个生成的电子表格,尝试获取其carpetas表。如果存在,请复制您想要的值(这是您已经拥有的脚本的一部分(

代码示例:

function copy_end(){
const folderIds = ["FOLDER_ID_1", "FOLDER_ID_2"]; // Add your parent folder ids
const carpetas = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('carpetas'); 
const firstrow = 0;
const lastrow = carpetas.getLastRow();
const rows = lastrow-firstrow;
const Range = carpetas.getRange(1,1,rows,4);
const DataCopied = Range.getValues();  
const startColumn = 1;
const numRows = DataCopied.length;
const numColumns = DataCopied[0].length;
folderIds.forEach(folderId => {
const parentFolder = DriveApp.getFolderById(folderId);
const subfoldersIter = folder.getFolders();
const folders = [parentFolder];
while (subfoldersIter.hasNext()) {
folders.push(folders.next());
}
folders.forEach(folder => {
const filesIter = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
while (filesIter.hasNext()) {
const file = fileIter.next();
const fileId = file.getId();
const pegar = SpreadsheetApp.openById(fileId).getSheetByName('carpetas');
if (pegar) {
const startRow = pegar.getLastRow()+1;
pegar.getRange(startRow, startColumn, numRows, numColumns).setValues(DataCopied);
}
}
});
});
}

最新更新