google sheets, получить все имена листов, где в ячейке «A1» нет определенной строки

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

У меня очень большой файл Google sheets с большим количеством листов, и мне нужен список листов, где в ячейке нет строки «описание». На некоторых листах она отсутствует или находится в неправильной ячейке, и мне нужно найти те, которые исправляют эти листы. Я не могу понять, как расширить этот код, который я нашел здесь. Я очень новичок в Google Sheets.

 /*** return sheet names for active document
 * @customfunction
 */
function sheetName() {
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<sheets.length ; i  ) out.push( [ sheets[i].getName() ] )
  return out 
}
 

Ответ №1:

Чтобы проверить одну ячейку:

 function checkCell() {
  let value = "description" // edit this for your value
  let file = SpreadsheetApp.getActive();
  let sheet = file.getActiveSheet(); // gets your active sheet
 
  // gets value from cell A1
  let valueToCheck = sheet.getRange("A1").getValue()

  // Checking value
  if(valueToCheck != value) {
    // if NOT right value, print "FALSE"
    Logger.log("FALSE")
  }
}
 

Чтобы проверить все листы:

 function checkSheets() {
  let value = "description" // edit this for your value
  let file = SpreadsheetApp.getActive();
  let sheets = file.getSheets(); // gets all sheets in array
 
  let numberOfSheets = sheets.length // gets number of sheets in total
  
  let result = []; // initialize empty array
  
  // for loop to run as many times as there are number of sheets
  for (let i=0; i<numberOfSheets; i  ) {
    
    // Getting value from sheet cell A1
    let valueToCheck = sheets[i].getRange("A1").getValue()

    // Checking value
    if(valueToCheck != value) {
      // if NOT right value, get sheet name
      let name = sheets[i].getName()
      // Add to result array
      result.push(name);
    }
  }
  
  // Print sheets without right value to console
  Logger.log(result)
}
 

Скопируйте это в свой редактор сценариев, запустите его, а затем перейдите к просмотру> Журналы.

Ссылки и дальнейшее Чтение

Ответ №2:

 function findAll() {
  const ss=SpreadsheetApp.getActive();
  const shts=ss.getSheets();
  let f=[];
  shts.forEach(sh=>{
    if(sh.getRange("A1").getValue()=="Description") {
      f.push(sh.getName());
    }
  });
  SpreadsheetApp.getUi().showModelessDialog(f.join('<br />'),"Sheets with String in A1")
}