получение имен листов не работает должным образом или не обновляется автоматически после использования l oop для копирования на новые листы - PullRequest
0 голосов
/ 01 марта 2020

Я использую это l oop для создания или дублирования на новые листы из существующего листа Main

var ss = SpreadsheetApp.getActiveSpreadsheet()
for (var sheet = 1; sheet <= 5; sheet++) {
  ss.getSheetByName("Main").copyTo(ss).setName(sheet)
}

, а также я заполняю формулу sheetname () в ячейке A1, эта формула для тех листов, которые она показывает «Копия основного» - это неверное имя листа с номером «от 1 до 5», как указано выше (на самом деле числа меняются на мои wi sh)

function sheetname() {
  return SpreadsheetApp.getActiveSpreadsheet().getSheetName()
}

Когда я вручную добавляю имя листа (), оно работает просто отлично. Но когда я использую скрипт l oop, скопируйте и затем используйте пользовательскую формулу. Это не работает должным образом или это не автоматическое обновление.

Есть ли способы получить эту работу, когда мне не нужно пополнять ее вручную? Или я могу сделать, чтобы установить значение имени листа в l oop "для" это возможно?

1 Ответ

2 голосов
/ 01 марта 2020

Вы можете познакомиться с лучшей статьей об этом Automati c Пересчет пользовательской функции в электронной таблице, часть 1 , Automati c Пересчет пользовательской функции в электронной таблице, часть 2

Для вашей ситуации подойдет следующий код

var ss = SpreadsheetApp.getActiveSpreadsheet();

for (var sheet = 1; sheet <= 5; sheet++)
  ss.getSheetByName("Main").copyTo(ss).setName(sheet);

var temp = Utilities.getUuid();
ss.createTextFinder("=").matchFormulaText(true).replaceAllWith(temp);
ss.createTextFinder(temp).matchFormulaText(true).replaceAllWith("=");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...