скрипты Google: скрыть лист по точному имени

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

У меня есть файл Google sheets, который содержит 1 вкладку в день, и название каждой вкладки — adate в формате d MMMM yyyy. Теперь я создал скрипт, который просматривает файл и скрывает любые вкладки, название которых старше, чем сегодня-14, что прекрасно работает, НО: по какой-то причине он не ищет точное совпадение, а содержит совпадение. так, например, если он ищет 1 декабря, он скроет также 11 декабря, поскольку в нем также содержится 1 декабря.

Вопрос; Как бы вы посоветовали мне настроить скрипт для поиска и скрытия только точного соответствия?

 // Get list of sheet names in an array format
function sheetnames() {
// Define array
var out = new Array()
// Get sheets
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
// get current month
  var testDate = new Date();
  var date = new Date();
  date.setDate(testDate.getDate()-14);
  var secondDate = Utilities.formatDate(date, Session.getScriptTimeZone(), "d MMMM").toLowerCase();
  Logger.log(secondDate);
// Work through each sheet one at a time
  for (var i=0 ; i<sheets.length ; i  ) {
// define the current sheet
    var curSheetName = sheets[i].getName();
// determine if matches criteria
if (curSheetName.indexOf(secondDate) !== -1) {
 sheets[i].hideSheet();
}
    }
  }
 

Ответ №1:

Метод String.prototype.indexOf(searchValue) проверяет, является ли searchValue подстрокой указанной строки

  • Другими словами, он проверяет, содержит ли строка susbtring
  • Это поведение отличается от Array.prototype.indexOf()
  • В вашем случае, если вы ищете точное совпадение, измените
 if (curSheetName.indexOf(secondDate) !== -1)
 

Для

 if (curSheetName == secondDate)
 

Комментарии:

1. это прекрасно работает. просто пришлось внести небольшую корректировку, чтобы добавить год в переменную secondDate, чтобы теперь точно соответствовать названию вкладки. var secondDate = Utilities.formatDate(дата, сессия.getScriptTimeZone(), «д ММММ гггг»). toLowerCase();