从工作表创建文件
问题描述:
我希望Apps脚本根据工作表中的姓名创建新的电子表格。举例来说,如果我的名字(在第7栏)的名单分别为:从工作表创建文件
我想脚本通过此列表迭代,只有名称替换字符串(减去电子邮件域)搜索驱动器f或与名称匹配的现有文件。 另外,如果存在现有文件,则不执行任何操作,否则请创建一个名称为工作表的工作表。
我在下面的代码似乎遍历列表并替换字符串,但最后两个步骤有问题。 它会看到Bender不存在,它会创建一个Bender文件,但它会在迭代整个列表时创建其他Bender文件,并且不会创建其他缺失的文件。
任何援助将不胜感激。
function findExistingSheets() {
var sheet = SpreadsheetApp.openById('SpreadSheetKey').getSheetByName('ISheetName');
var data = sheet.getDataRange().getValues();
var files = DriveApp.getFolderById("FileKeyID").getFiles();
for (var i = 1; i < data.length; i++) {
var searchFor = data[i][7].replace("@interpret.org.nz","");
while (files.hasNext()) {
var file = files.next();
if(searchFor == file.getName()){
//Don't do anything
}
else {
//Create speadsheet file with the matchfile name.
var newFile = SpreadsheetApp.create(searchFor);
}
}
}
Logger.log(searchFor);
}
答
试试这个。我没有测试过,但我认为它会让你接近。
function findExistingSheets() {
var sheet = SpreadsheetApp.openById('SpreadSheetKey').getSheetByName('ISheetName');
var data = sheet.getDataRange().getValues();
var titles = [];
for (var i = 1; i < data.length; i++)
{
titles.push(data[i][7].replace("@interpret.org.nz",""));
}
var files = DriveApp.getFolderById("FileKeyID").getFiles();
while (files.hasNext())
{
var file = files.next();
var idx = idxOf(titles,file.getName());
if(idx>-1)
{
var newFile = SpreadsheetApp.create(titles[idx]);
}
}
}
function idxOf(array, x)
{
for(var i = 0;i < array.length;i++)
{
if(array[i]==x)
{
return i;
}
}
return -1;
}
感谢您的库珀循环
for
开始。我会尽快尝试。我首先想在脑海中仔细检查一下,找出方法。再次感谢。 – LeoSaumure