我有一张表格需要复制到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');
}
答案 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()
属性。