Google apps script 从图纸创建文件

Google apps script 从图纸创建文件,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想让应用程序脚本根据工作表中的名称创建一个新的电子表格。例如,如果我的姓名列表(第7列)为: Bender@interpret.org.nz Fry@interpret.org.nz Hermes@interpret.org.nz Leela@interpret.org.nz Nibbler@interpret.org.nz 我希望脚本遍历此列表,将字符串替换为名称(减去电子邮件域),在驱动器中搜索与名称匹配的现有文件。 此外,如果存在一个现有文件,则不执行任何操作,否则创建一个名为的图纸

我想让应用程序脚本根据工作表中的名称创建一个新的电子表格。例如,如果我的姓名列表(第7列)为:

  • Bender@interpret.org.nz
  • Fry@interpret.org.nz
  • Hermes@interpret.org.nz
  • Leela@interpret.org.nz
  • Nibbler@interpret.org.nz
我希望脚本遍历此列表,将字符串替换为名称(减去电子邮件域),在驱动器中搜索与名称匹配的现有文件。 此外,如果存在一个现有文件,则不执行任何操作,否则创建一个名为的图纸

我下面的代码似乎在遍历列表并替换字符串,但最后两个步骤存在问题。 它会看到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);
    }
函数findExistingSheets(){
var sheet=SpreadsheetApp.openById('SpreadSheetKey').getSheetByName('ISheetName');
var data=sheet.getDataRange().getValues();
var files=DriveApp.getFolderById(“FileKeyID”).getFiles();
对于(变量i=1;i
试试这个。我还没有测试过,但我想它会让你接近的

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;
}
函数findExistingSheets(){
var sheet=SpreadsheetApp.openById('SpreadSheetKey').getSheetByName('ISheetName');
var data=sheet.getDataRange().getValues();
var标题=[];
对于(变量i=1;i-1)
{
var newFile=SpreadsheetApp.create(titles[idx]);
}
}
}
函数idxOf(数组,x)
{
for(var i=0;i
JavaScript索引从0开始,但您的
for
循环从1开始。

1是经过设计的。这是一个省去列标题的简单方法。谢谢Cooper。我很快就会试试这个。首先,我想在头脑中反复思考几次,找出方法论。再次感谢。