Подстановочное выражение при поиске имени листа в листах Google. Google App Script - PullRequest
1 голос
/ 26 февраля 2020

Возникла проблема при попытке поиска определенных листов Google в папке, которые были импортированы. Каждый импортированный лист Google имеет обычное имя и уникальный идентификатор. Пример: ручной экспорт (1024508324)

Я создал скрипт, который берет все листы Google внутри папки для импорта в один основной лист Google. Ниже: '' '

function getdata() {
  //declare multiple variables in one statement - Initial value will
  //be undefined
  var destinationSpreadsheet,destinationSS_ID,destsheet,destrange,file,files,
      sourcerange,sourceSS,sourcesheet,srcSheetName,sourcevalues;
  var pattern = /.Manual./;
  srcSheetName = (pattern)   
  destinationSS_ID = "1DmG5DuWmBqaImUuVvXrhH6mRRozsv7ksjYoFLbEhVGY";
  files = DriveApp.getFolderById("13Z0RSeWnzW9mbm1wnTOEQrkzxUFCdCZF").getFiles();
  destinationSpreadsheet = SpreadsheetApp.openById(destinationSS_ID);
  destsheet = destinationSpreadsheet.getSheetByName('Master');  

  while (files.hasNext()) {
    file = files.next();
    if (file.getMimeType() !== "application/vnd.google-apps.spreadsheet") {
      continue;
    };
    sourceSS = SpreadsheetApp.openById(file.getId());
    sourcesheet = sourceSS.getSheetByName(srcSheetName);
    //sourcesheet.getRange(start row, start column, numRows, number of Columns)
    sourcerange = sourcesheet.getRange(2,1,sourcesheet.getLastRow()-1,13);
    sourcevalues = sourcerange.getValues();

    //Write all the new data to the end of this data
    destrange = destinationSpreadsheet.getSheetByName("Master")
        .getRange(destsheet.getLastRow()+1,1,sourcevalues.length,sourcevalues[0].length);

    destrange.setValues(sourcevalues);         
  };
};

' ''

Область, в которой у меня возникли проблемы:

 var pattern = /.Manual./;
      srcSheetName = (pattern) 

Я хочу найти любой документ со словом " Руководство "внутри имени, которое будет использоваться в SrcSheetName. Каков наилучший способ сделать этот шаблон? Я пытался использовать ./Manual./, но это не сработало.

Дайте мне знать, Гаррет Кидд

1 Ответ

0 голосов
/ 26 февраля 2020

Получить все листы и использовать String # включает или String # начинается с и Array # find , чтобы получить правильный лист:

sourceSS = SpreadsheetApp.openById(file.getId());
sourcesheet = sourceSS.getSheets().find(sheet => 
  sheet.getName().includes("Manual"))
...