用于将一个工作表复制到Google云端硬盘中特定文件夹中的各种电子表格的脚本

时间:2015-05-25 01:37:21

标签: google-apps-script spreadsheet

我有一张表格需要复制到Google云端硬盘中指定文件夹中的数百个电子表格中。我刚开始使用脚本而且我不知道如何继续,因为下面的脚本只是给了我一个错误。感谢。

function myFunction() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];
var folder = DriveApp.getFoldersByName('TEST FOR SCRIPT');
var contents = folder.getFiles();
for (var i = 0; i < contents.length; i++) {
file = contents[i];  
}
sheet.copyTo(contents).setName('ANSWERS');
}

2 个答案:

答案 0 :(得分:1)

我在Google+社区内的某个人那里得到了这个答案,并且有效:

function copyToSheets() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[1];

var folders = DriveApp.getFoldersByName('ID');
var firstFolder = folders.next();
var folderFiles = firstFolder.getFiles();
var thisFile;

while (folderFiles.hasNext()) {
  thisFile = folderFiles.next();
  var currentSS = SpreadsheetApp.openById(thisFile.getId());
  sheet.copyTo(currentSS);
  currentSS.getSheets()[currentSS.getSheets().length-1].setName('NAME');
  }
}

答案 1 :(得分:0)

这行代码:

SurfaceView

返回FolderIterator。即使您只有一个名称的文件夹,var folder = DriveApp.getFoldersByName('TEST FOR SCRIPT'); 方法也会返回一个对象,您无法直接使用getFoldersByName()方法。 getFiles()方法适用于Files类。它不适用于Folder Iterator。获得文件夹迭代器后,必须使用getFiles()方法获取对象中的第一个(也可能是唯一的)文件夹。

next()

并使用function getAllFilesInFolder() { var source = SpreadsheetApp.getActiveSpreadsheet(); var sheet = source.getSheets()[0]; var folders = DriveApp.getFoldersByName('Folder Name Here'); var firstFolder = folders.next(); var folderFiles = firstFolder.getFiles(); var thisFile; while (folderFiles.hasNext()) { thisFile = folderFiles.next(); Logger.log(thisFile.getName()); }; }; 循环浏览文件。它似乎不是Files对象的hasNext()属性。