简体   繁体   English

GAS扫描文件夹中的所有电子表格,并更改特定的单元格值和工作表名称?

[英]GAS Scan all spreadsheets in folder and change a specific cell value and sheet name?

 function getAllSheetsInFolder () { var folder = DriveApp.getFolderById("ID"); var contents = folder.getFiles(); Logger.log("file length: " + contents.length); var file; var data; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Class Data") sheet.clearContents(); var numOfFiles = contents.length; for (var i = 0; i < numOfFiles; i++) { file = contents[i]; Logger.log("count: " + i); //Reset to null on every iteration var onecell = null; var theRange = null; var theFileType = file.getFileType(); Logger.log("theFileType: " + theFileType); if (theFileType==DocsList.FileType.SPREADSHEET) { var sheet = SpreadsheetApp.open(file).getSheets()[0]; var cell = sheet.getRange(2,7); cell.setValue('RTI') }; } } } 

I am looking to write a GAS that scans all of the spreadsheets in a folder and changes the value of cell (G2) in every spreadsheet. 我希望编写一种GAS,它可以扫描文件夹中的所有电子表格并更改每个电子表格中单元格(G2)的值。 Can it be set up to scan all spreadsheets in the folders and subfolders? 是否可以将其设置为扫描文件夹和子文件夹中的所有电子表格? Or just each spreadsheet in a specific folder. 或者只是特定文件夹中的每个电子表格。

I am also looking to change the name of of the 4th sheet in each of the spreadsheets as well. 我还希望更改每个电子表格中第4张纸的名称。 I just wanted to see if you guys thought this was a possibility before I start messing with some code. 我只是想看看你们是否认为在我开始弄乱某些代码之前这是有可能的。

Here some code that gets a reference to a folder, and loops through the folder looking for spreadsheet files. 这里有一些代码获得对文件夹的引用,并循环遍历该文件夹以查找电子表格文件。

function getAllSheetsInFolder () {
  var folder = DriveApp.getFolderById("Your Folder ID");
  Logger.log('folder: ' + folder);

  var sheetFiles = folder.getFilesByType("application/vnd.google-apps.spreadsheet");
  Logger.log("sheetFiles.hasNext(): " + sheetFiles.hasNext());

 while (sheetFiles.hasNext()) {
   var file = sheetFiles.next();

   var theFileType = file.getMimeType();
   Logger.log("theFileType: " + theFileType);


   var ssID = file.getId();
   Logger.log('ssID: ' + ssID);

   var thisSS = SpreadsheetApp.openById(ssID);

   var sheet = thisSS.getSheets()[0];

   var cell = sheet.getRange(2,7);
   cell.setValue('Test Cell Set')
  };
};

This code uses a combination of DriveApp to get a list of spreadsheet files in a specific folder, then uses SpreadsheetApp to actually open the spreadsheet file, and write a value to a cell. 此代码结合使用DriveApp来获取特定文件夹中的电子表格文件列表,然后使用SpreadsheetApp实际打开电子表格文件并将值写入单元格。

The DocsList Class is now deprecated. 现在不推荐使用DocsList类。 My original code was using DocsList rather than DriveApp , but they are very different. 我的原始代码使用的是DocsList而不是DriveApp ,但是它们有很大的不同。 DriveApp can get a Folder, a list of files, and set and get other file information, but DriveApp can't open a spreadsheet file. DriveApp可以获取文件夹,文件列表,以及设置和获取其他文件信息,但是DriveApp无法打开电子表格文件。 You have to open the spreadsheet file with SpreadsheetApp . 您必须使用SpreadsheetApp打开电子表格文件。 So the code must first get the folder, then a list of all spreadsheets in the folder, and the ID of each spreadsheet. 因此,代码必须首先获取文件夹,然后获取文件夹中所有电子表格的列表以及每个电子表格的ID。 Then open the spreadsheet by ID. 然后按ID打开电子表格。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM