Возвращает данные заполнителя, если getSheetByName имеет значение null - PullRequest
0 голосов
/ 28 марта 2020

В настоящее время у меня есть сценарий, который копирует данные с нескольких листов с указанным именем c и затем объединяет их в мастер-лист.

Я пытаюсь выяснить, что делать, если лист не иметь это имя c. На данный момент у меня есть оператор if для этого случая, который будет просто возвращать первый лист, который он найдет в этой таблице. В идеале я хотел бы вернуть одну строку со значением «имя не найдено».

Я не знаком с Google Script или не работаю с электронными таблицами, поэтому, пожалуйста, укажите мне любую документацию, которая может помочь.

function populateMasterTracker() {
 var trackerFolder = DriveApp.getFolderById("id"); 
 var trackerFiles = trackerFolder.getFiles();
 var combinedData = []; 
 var data;

//loop through files
while(trackerFiles.hasNext()){
  var file = trackerFiles.next();

  //object for each file
  var fileObject = {
    name: file.getName(),
    id: file.getId()
  }


  data = getDataFromSheet(fileObject.id,fileObject.name);
  combinedData = combinedData.concat(data);

}

 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Master');

 ss.getRange(2,1,combinedData.length,8).setValues(combinedData);
}


function getDataFromSheet(id,name){
 var personalSheet = SpreadsheetApp.openById(id);
 var ss = personalSheet.getSheetByName('QC');

 if(!ss){
  //if qc not found
  Logger.log(name+ " not found")
  ss = personalSheet.getSheets()[0];
}

 var lastFilledRow = getLastPopulatedRow(ss.getRange('A:F').getValues());
 var range = ss.getRange('A2:H'+lastFilledRow);
 var data = range.getValues();

  Logger.log(data)

     return data
}

1 Ответ

0 голосов
/ 29 марта 2020

Как насчет этого:

function getDataFromSheet(id,name){
 var personalSheet = SpreadsheetApp.openById(id);
 var ss = personalSheet.getSheetByName('QC');
 if(!ss){
   return [[Utilities.formatString('FileName: %s ID: %s Has no sheet named %s',name,id,'QC')]]; //You may need to add 7 null columns so that all the data will be the same width.
 }else{

 var lastFilledRow = getLastPopulatedRow(ss.getRange('A:F').getValues());
 var range = ss.getRange('A2:H'+lastFilledRow);
 var data = range.getValues();
 return data
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...