搜索当前文件夹中的电子表格并更改找到的每个文件的特定单元格中的值

时间:2015-07-17 00:33:36

标签: google-apps-script

此处是Google Apps脚本新手,但具有一定的编码经验。我想扫描电子表格的当前文件夹。对于找到的每个电子表格,我想更改特定单元格中的值(比如" Sheet1"中的单元格F16)到" 2016财年第一季度和#34;。以下是我到目前为止的情况:

function myFunction() {

var folderID ="0BxfGszImm3D9flpVlWXd4bjQ";
var topFolder = DriveApp.getFolderById(folderID);
Logger.log(topFolder.getName());
var filesList = topFolder.getFiles();

while (filesList.hasNext()) {
    var file = filesList.next();
    Logger.log(file.getName());
    file.getSheetByName("Sheet1").getRange("F16").setValue("Q1 FY16");
 }
}

有两个主要问题:

  1. 我必须在此指定文件夹ID,我不想这样做。我希望代码在当前目录中运行(最终我将使其递归以扫描所有子文件夹)。
  2. File类没有" getSheetByName()"或" getRange()"方法,但我不知道如何将文件转换为Spreadsheets。
  3. 对此的任何帮助将不胜感激。

    干杯

1 个答案:

答案 0 :(得分:0)

  1. 您将从何处启动此脚本?他们无法直接从谷歌驱动器启动脚本。

  2. 能够使用getSheetByName()和getRange(),您需要将该文件作为电子表格打开。 而不是使用这一行:

    file.getSheetByName("Sheet1").getRange("F16").setValue("Q1 FY16");
    
  3. 你应该使用这样的东西:

    try {
    SpreadsheetApp.openById(file.getId()).getSheetByName("Sheet1").getRange("F16").setValue("Q1 FY16");
    } 
    catch(e){}
    

    你需要使用try-catch,因为在尝试使用SpreadsheetApp.openById()时,某些文件不会是电子表格,并且会给出错误。

    我希望这会对你有所帮助,一旦我获得第一部分的更多信息,我会尝试更新这个答案。

    祝你好运。