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

时间:2015-01-05 14:30:19

标签: javascript google-apps-script

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')


    };
  }
}
}

我希望编写一个GAS来扫描文件夹中的所有电子表格,并更改每个电子表格中单元格(G2)的值。可以设置为扫描文件夹和子文件夹中的所有电子表格吗?或者只是特定文件夹中的每个电子表格。

我也希望更改每个电子表格中第4张的名称。我只是想在你开始搞乱一些代码之前看看你们是否认为这是一种可能性。

1 个答案:

答案 0 :(得分:0)

这里有一些代码可以获取对文件夹的引用,并在文件夹中循环查找电子表格文件。

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')
  };
};

此代码使用DriveApp的组合来获取特定文件夹中的电子表格文件列表,然后使用SpreadsheetApp实际打开电子表格文件,并将值写入单元格。

现在不推荐使用DocsList类。我的原始代码使用的是DocsList而不是DriveApp,但它们非常不同。 DriveApp可以获取文件夹,文件列表以及设置和获取其他文件信息,但DriveApp无法打开电子表格文件。您必须使用SpreadsheetApp打开电子表格文件。因此,代码必须首先获取文件夹,然后是文件夹中所有电子表格的列表,以及每个电子表格的ID。然后按ID打开电子表格。