Скрипты Google используют функцию ReplaceText

#google-apps-script

#google-apps-script

Вопрос:

У меня есть эта функция, которая возвращает все листы, которые не содержат *.

Я хотел бы заменить некоторый текст в результатах.

Результаты показывают все мои листы без *, например «Клиент <25», «Клиент <50» и т. Д

Я хочу получить результат: «< 25», поэтому удалите из него «Клиент».

 function SheetNamesFiltered(avoid_memoization) {
  return SpreadsheetApp.getActiveSpreadsheet().getSheets()
  .map(sheet => [sheet.getName()])
  .filter(sheetName => !sheetName[0].match(/*/));
}
 

Я пробовал следующее, но это не работает

     function SheetNamesFiltered(avoid_memoization) {
  return SpreadsheetApp.getActiveSpreadsheet().getSheets()
  .map(sheet => [sheet.getName()].replaceText("Client ", ""))
  .filter(sheetName => !sheetName[0].match(/*/));
}
 

Спасибо!

Ответ №1:

Вместо того, чтобы делать replaceText это во время map, я разделил их. Во-первых, получение sheetName с помощью no * , а затем удаление Client using replace во всех результатах.

 function SheetNamesFiltered(avoid_memoization) {
  var array = SpreadsheetApp.getActiveSpreadsheet().getSheets()
  .map(sheet => [sheet.getName()])
  .filter(sheetName => !sheetName[0].match(/*/));
  // Separated replacement in every item in array result
  array.forEach(function(item){
    item[0] = item[0].replace("Client ", "");
  });
  Logger.log(array);
}
 

Вывод:

вывод

Листы:

листы

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

1. Большое спасибо! Я просто изменил конец, чтобы вернуть результат с помощью возвращаемого массива;