Как GetSheetByName, используя частичную строку в скрипте приложений Google - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь использовать .getSheetByName (''), чтобы получить лист, имя которого содержит определенную строку, например, 'V1' или 'V4', а не точное совпадение. Скажем, имя листа «2020 0304 V1», первая часть всегда меняется, но содержит V1, я пробовал .getSheetByName ('* V1'), но он не работает. Любой намек на то, как этого добиться?

1 Ответ

3 голосов
/ 27 марта 2020

Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и обходное решение:

К сожалению, на данном этапе метод, подобный регулярному выражению, не может использоваться с getSheetByName(). Поэтому в этом случае необходимо использовать обходные пути.

В этом ответе я хотел бы предложить 2 шаблона.

Шаблон 1:

В этом шаблоне test используется для поиска по названию листа. getSheetName() используется для получения имени листа. В этом случае предполагается, что шаблон похож на 2020 0304 V1.

Пример сценария:

function myFunction() {
  const searchText = "V1";

  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  const regex = RegExp(`\\d{4} \\d{4} ${searchText}`);
  const sheet = sheets.filter(s => regex.test(s.getSheetName()));
  if (sheet.length > 0) console.log(sheet[0].getSheetName());
}
  • В этом случае, если есть только один лист, который имеет лист имя шаблона \d{4} \d{4} V1 в вашей электронной таблице, вы можете получить лист по sheet[0].

шаблон 2:

В этом шаблоне includes используется для поиск имени листа. getSheetName() используется для получения имени листа.

Пример сценария:

function myFunction() {
  const searchText = "V1";

  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  const sheet = sheets.filter(s => s.getSheetName().includes(searchText));
  if (sheet.length > 0) console.log(sheet[0].getSheetName());
}
  • В этом случае, если существует только один лист с именем листа, включающим V1 в вашей электронной таблице, вы можете извлечь лист с помощью sheet[0].

Примечание:

  • В этом случае, пожалуйста, включите V8 в редакторе сценариев.

Ссылки:

Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...