Активировать таблицу объектов в Google Таблицах

#google-apps-script #google-sheets

#google-приложения-скрипт #google-sheets

Вопрос:

У меня есть встроенная диаграмма на листе, и я перемещаю диаграмму на другой лист (который создается не мной, а кодом) с помощью метода moveChartToObjectSheet:

  var charts = chartsSheet.getCharts()
    
 for (var i in charts) {
      
     var chart = charts[i];
      
     var objectSheet = SpreadsheetApp.getActive().moveChartToObjectSheet(chart)
       

Но я не могу активировать эту таблицу объектов. После перемещения диаграммы я зацикливаю все листы и получаю положение листа объектов в цикле, или я получаю индекс листа и вызываю метод .activate, но этот лист не становится активным.

Я даже пытался активировать по его имени (хотя имена могут быть разными, если вы удалите одно, оно добавит следующий номер к имени листа объектов) и безуспешно.

Есть ли способ активировать таблицу объектов?

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

1. var myNewSheet ss.insertSheet('My New Sheet'); Я полагаю, что затем вы можете использовать myNewSheet.moveChartToObjectSheet(chart) для добавления диаграммы на новый лист. Однако я это не тестировал.

2. к сожалению, этот метод доступен только после таблицы, а не листа.

3. Прошу прощения, я не включил строку для настройки ss: var SpreadsheetApp.getActive(); другим методом было бы объединить их, но если вы делаете что-то для чтения 2 разных листов в одном файле, вам может оказаться быстрее установить ss, как я сделал здесь.

4. Я имею в виду, что этот метод недоступен после объекта «лист». Только после таблицы (ss.moveChartToObjectSheet (диаграмма)), но не sheet.moveChartToObjectSheet(диаграмма)

5. Немного покопался. Вы перемещаете диаграмму в новый объект типа листа , если диаграмма еще не находится ни в одном из них. Если это так, то он просто возвращает текущий объект, в котором он находится. Затем на уровне листа появляется, что вы будете использовать sheet.insertChart , чтобы поместить его в новое местоположение.