Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 将一张工作表复制到Google Drive中特定文件夹中的各种电子表格的脚本_Google Apps Script_Spreadsheet - Fatal编程技术网

Google apps script 将一张工作表复制到Google Drive中特定文件夹中的各种电子表格的脚本

Google apps script 将一张工作表复制到Google Drive中特定文件夹中的各种电子表格的脚本,google-apps-script,spreadsheet,Google Apps Script,Spreadsheet,我有一张表格,我需要将它复制到Google Drive中给定文件夹中的数百张电子表格中。我只是从脚本开始,我不知道如何继续,因为下面的脚本只是给了我一个错误。谢谢 function myFunction() { var source = SpreadsheetApp.getActiveSpreadsheet(); var sheet = source.getSheets()[0]; var folder = DriveApp.getFoldersByName('TEST FOR SCRIPT')

我有一张表格,我需要将它复制到Google Drive中给定文件夹中的数百张电子表格中。我只是从脚本开始,我不知道如何继续,因为下面的脚本只是给了我一个错误。谢谢

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');
}
函数myFunction(){
var source=SpreadsheetApp.getActiveSpreadsheet();
var sheet=source.getSheets()[0];
var folder=DriveApp.getFoldersByName(“脚本测试”);
var contents=folder.getFiles();
对于(变量i=0;i
这行代码:

var folder = DriveApp.getFoldersByName('TEST FOR SCRIPT');
返回一个。即使您只有一个同名文件夹,
getFoldersByName()
方法也会返回一个对象,您不能直接在该对象上使用
getFiles()
方法。
getFiles()
方法适用于Files类。它对文件夹迭代器不可用。获取文件夹迭代器后,必须使用
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');
  }
}

您可以使用调试器逐行运行每一行代码。如何使用复制文件夹加载项:@BjornBehrendt我不明白你的评论。我的问题是把一张表格复制到其他电子表格,而不是将文件夹成倍增加。谢谢。谢谢@sandygood,但正如我之前提到的,由于我对代码一无所知,我不知道如何继续处理您发送的内容。请您完成代码,以便其他人可以找到完整的答案,只需复制代码即可?在您发送给我的邮件的末尾,我应该放些什么,以便它最终将该表格复制到其他电子表格中?谢谢。更具体地说,如果我只添加sheet.copyTo(thisFile.setName('ANSWERS');在您发送给我的邮件的末尾,它告诉我“找不到方法copyTo(File)”