将一个 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');
}
}
我有一个 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');
}
}