将一个 sheet 复制到 Google Drive 中特定文件夹中的各种传播 sheet 的脚本

A script to copy one sheet to various spreadsheets in a specific folder in Google Drive

我有一个 sheet,我需要将其复制到 Google 驱动器中给定文件夹中的数百个传播sheet。我刚开始使用脚本,我不知道如何继续,因为下面的脚本只是给我一个错误。谢谢

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

这行代码:

var folder = DriveApp.getFoldersByName('TEST FOR SCRIPT');

returns一个FolderIterator。即使您只有一个同名文件夹,getFoldersByName() 方法 returns 一个对象,您也不能直接使用 getFiles() 方法。 getFiles() 方法适用于文件 Class。它不适用于文件夹迭代器。获取文件夹迭代器后,必须使用 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());
 };
};

并且还使用 hasNext() 遍历文件。文件对象似乎没有 length 属性。

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