Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果getSheetByName为null,则返回占位符数据_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如果getSheetByName为null,则返回占位符数据

Javascript 如果getSheetByName为null,则返回占位符数据,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我目前有一个脚本,可以从多个具有特定名称的工作表中复制数据,然后将其合并到主工作表中 我试图弄清楚当工作表没有特定名称时该怎么办。到目前为止,我有一个if语句,它只会返回它在电子表格中找到的第一张表。理想情况下,我希望返回一个值为“name not found”的单行 我不熟悉谷歌脚本或电子表格,所以请告诉我任何有帮助的文档 function populateMasterTracker() { var trackerFolder = DriveApp.getFolderById("id");

我目前有一个脚本,可以从多个具有特定名称的工作表中复制数据,然后将其合并到主工作表中

我试图弄清楚当工作表没有特定名称时该怎么办。到目前为止,我有一个if语句,它只会返回它在电子表格中找到的第一张表。理想情况下,我希望返回一个值为“name not found”的单行

我不熟悉谷歌脚本或电子表格,所以请告诉我任何有帮助的文档

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
}

像这样的怎么样:

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
}
}

如果无法从电子表格中复制所需的数据,您需要什么。我们无法回答设计问题。这完全取决于你想要什么。我可能只是在母版中记下,该id没有工作表名称
QC
@Cooper如果我不清楚,很抱歉。当找不到ID时,我希望粘贴一行,其中包含找不到的文件名。问题是我不知道如何在脚本中创建这一行,我想我必须动态更改getRange方法,因为这不适合我当前使用的(2,1,length 8)参数。