Есть ли способ связать некоторые данные листа, когда этот лист был скопирован в новый? - PullRequest
0 голосов
/ 14 января 2020

Я создаю дополнение к Google Sheets, которое отображает некоторую информацию на листе и сохраняет данные в хранилище документов по PropertiesService. Я знаю, что нет способа проверить, когда лист был скопирован, если я хочу скопировать / связать данные с новым листом. И я слышал и читал о DeveloperMetadata. Но не осознавал: копируется ли DeveloperMetadata на лист, когда исходный лист копируется на новый? Я попробовал и увидел, что нет.

Итак, правильно? Если «да», нет ли разницы между использованием PropertiesService для документа и DeveloperMetadata для листа в этом случае?

UPD: (примерно DeveloperMetadata)

Я создал новую электронную таблицу и записал в Script Editor 2 функции:

function showAllMetadata()
{
  var allSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var allDeveloperMetadata = allSheets.map(function(sheet){
    return {
      id:       sheet.getSheetId(),
      name:     sheet.getName(),
      metadata: sheet.getDeveloperMetadata().map(function(meta){ return meta.getValue() })
    }
  });
  Logger.log(JSON.stringify(allDeveloperMetadata));
}

function addMetadataToCurrentSheet()
{
  SpreadsheetApp
    .getActiveSheet()
    .addDeveloperMetadata('metadata', 'foo');
  showAllMetadata();
}

Затем я сделал:

  1. Выполнить addMetadataToCurrentSheet() и увидел
[{"id":0,"name":"Sheet1","metadata":["foo"]}]
Дублируйте этот лист, нажав на кнопку «Дублировать» Запустите showAllMetadata() и увидите
[
  {"id":0,"name":"Sheet1","metadata":["foo"]},
  {"id":1107155653,"name":"Copy of Sheet1","metadata":[]}
]

Но я ожидал увидеть

[
  {"id":0,"name":"Sheet1","metadata":["foo"]},
  {"id":1107155653,"name":"Copy of Sheet1","metadata":["foo"]}
]

1 Ответ

1 голос
/ 15 января 2020

Суммируйте полученную информацию:

DeveloperMetadata на листе соединяет лист с его хранилищем, и если мы хотим скопировать этот лист с его метаданными, выполните:

  1. Скопируйте электронную таблицу - метаданные существуют
  2. Копирование листа с помощью кнопки Copy to или с помощью метода copyTo - метаданные существуют
  3. Копирование листа с помощью кнопки Duplicate - метаданные не существуют

Надеюсь, кнопка Duplicate в будущем будет работать правильно.

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