Google Script — оповещение, чтобы показать, какие строки были отмечены красным фоном

#javascript #arrays #google-apps-script #google-sheets

#javascript #массивы #google-apps-script #google-sheets

Вопрос:

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

   var blankRows = [];
  
  for(var i=0; i<data.length;i  ){
  if(data[i]=="Time: Midwest- Daily Entry"){
  if(data[i 1]==""){ // data contains all the cells in a column
  samsara.getRange(i 2,7).setBackground("red");
  blankRows[i] = i 2; 
  }
  }
}
var ui = SpreadsheetApp.getUi();
var response = ui.alert('Extra images detected in rows'   blankRows, ui.ButtonSet.OK);
  

Во-первых, я хотел бы, чтобы предупреждение появлялось только при наличии пустых строк, я думаю, что оператор if будет работать. Кроме того, в предупреждении отображаются «Дополнительные изображения, обнаруженные в строках ,,,,,,,,,,,,,,,,,,,79. Строка 79 имеет пустую ячейку, так что это правильно. Я предполагаю, что ,,,, из пустых ячеек в моем массиве blankRows. Как я могу заставить оповещение отображать только фактические номера строк?

Ответ №1:

Вместо

  blankRows[i] = i 2; 
  

используйте

  blankRows.push(i 2); 
  

затем замените

 var response = ui.alert('Extra images detected in rows'   blankRows, ui.ButtonSet.OK);
  

Автор:

 var response = ui.alert('Extra images detected in rows'   blankRows.join(', '), ui.ButtonSet.OK);
  

Ответ №2:

Возможно, лучше всего создать диапазон для пустых ячеек и использовать getRow() (https://developers.google.com/apps-script/reference/spreadsheet/range#getrow ). Вот что я придумал (возможно, вам потребуется настроить это, поскольку мои компьютеры старые, но вы поняли идею):

 var blankRows = [];
  
  for(var i=0; i<data.length;i  ){
  if(data[i]=="Time: Midwest- Daily Entry"){
  if(data[i 1]==""){ // data contains all the cells in a column
  samsara.getRange(i 2,7).setBackground("red");
  blankRows[i] = i 2; 
  }
  }
}
var ui = SpreadsheetApp.getUi();
var range = sheet.getRange("A1:D10");
var cells = range.insertCells(SpreadsheetApp.Dimension.COLUMNS);
var blank = cells.getRow()
var response = ui.alert('Extra images detected in rows'   blank )
  

информация о приложении SpreadsheetApp.Dimension