Как сделать ссылку на лист привязанным к имени вместо листа - PullRequest
1 голос
/ 03 февраля 2020

Я делаю электронную таблицу для форматирования ответов формы Google. Тем не менее, эта форма будет предоставляться каждую неделю; в идеале я хотел бы импортировать ответы формы в эту электронную таблицу, чтобы отформатированный лист данных теперь использовал этот новый лист ответов вместо старого, без необходимости обновления формул в листе данных. Но если я попытаюсь сделать это, переименовав новый лист данных в то, что называлось старым, он сохранит ссылку на старый лист и обновит его имя во всех формулах.

Я не нашел никаких решений от несколько поисков Google. Есть ли простой способ обойти это?

РЕДАКТИРОВАТЬ: здесь является примером электронной таблицы. В идеале я хочу, чтобы данные в «Листе форматирования» извлекались из «Нового листа» вместо старого листа. Однако я не хочу менять все формулы в «Листе форматирования», чтобы отразить это, поскольку это будет переход, который я делаю регулярно. К сожалению, переименование листов сохраняет ссылку.

1 Ответ

2 голосов
/ 03 февраля 2020
  • Вы хотите использовать значения на листе Formatting Sheet, заменив значения на листе Old Sheet новыми значениями на листе New Sheet.
  • В текущем выпуске даже при изменении имени листа значения не могут быть обновлены.

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

В вашем случае, даже если имя листа меняется, идентификатор листа не изменяется. При этом в формуле используются старые значения. Я думаю, что причина вашей проблемы заключается в следующем. В этом ответе для достижения вашей цели используется скрипт Служб Google.

Поток:

Ход выполнения примера сценария следующий.

  1. Извлеките объект листа из New Sheet и Old Sheet, которые являются исходным листом и целевым листом соответственно.
  2. Резервное копирование Old Sheet.
    • Если вы не хотите создавать резервную копию, удалите destinationSheet.copyTo(ss).setName(destinationSheet.getName() + "_backup_" + new Date().toISOString());.
  3. Скопируйте значения из New Sheet в Old Sheet. Этим значения заменяются. А в Formatting Sheet используются новые значения.

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

Пожалуйста, скопируйте и вставьте следующий пример сценария в редактор сценариев своей общей электронной таблицы. И запустите myFunction().

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName("New Sheet");
  var destinationSheet = ss.getSheetByName("Old Sheet");

  // Backup "Old Sheet".
  destinationSheet.copyTo(ss).setName(destinationSheet.getName() + "_backup_" + new Date().toISOString());

  // Put values from "New Sheet" to "Old Sheet"
  sourceSheet.getDataRange().copyTo(destinationSheet.getRange(1, 1));
}
  • Когда вы запустите скрипт myFunction(), вы можете увидеть результат, рассчитанный по новым значениям на листе Formatting Sheet.

Ссылки:

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