Добавление горизонтальной оси к диаграмме с помощью скрипта Google Apps

#google-apps-script #google-visualization

#google-приложения-скрипт #google-визуализация

Вопрос:

Вот мои данные для графиков. 1 строка = 1 отдельная диаграмма.У меня есть скрипт, который создает линейную диаграмму. См. Экран данных (каждая строка = 1 отдельная диаграмма с горизонтальной осью, содержащей месяцы (строка заголовка))

Я не могу добавить горизонтальную ось с месяцами, чтобы получить красивые линии на графике.

Прямо сейчас точки статистики отображаются в виде точек, а не линий.

Я просмотрел много тем и документацию Google по этому вопросу, но это сбивает меня с толку.

Вот как я создаю диаграмму:

  var chart = sheet.newChart()
        .setChartType(Charts.ChartType.LINE)
        .addRange(range) //pass a range with data from a sheet
        .setPosition(3, 3, 0, 0)
        .setOption("title", name)        
        .build();

 sheet.insertChart(chart); 

Таким образом, данные отображаются как .AddRange, но как я могу добавить месяцы в качестве горизонтальных осей

Я получаю диапазоны динамически при циклическом перемещении по ячейкам листа (i от 1 до последней строки). Это пример, в котором я отправляю первые 2 строки в виде диапазона (addRange()) и получаю первую строку для использования в качестве горизонтальной оси (заголовки).

         var range = sheet.getRange(i, 3, 2, 12);          

        var months = sheet.getRange(1, 3, 1, 12)  
 

Этот метод не добавляет горизонтальную ось:

 .setOption("hAxis", months)
 

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

1. Попробуйте addRange(months).addRange(range) или addRange(months).addRange(range).setTransposeRowsAndColumns(true)

2. Я попробовал это, и в 1-м случае он добавил месяцы к диаграмме в качестве значений, во 2-м случае он добавил правильно, но дублировал месяцы, поэтому я получил их 2 раза. Как я могу поделиться скриншотом с таблицей данных? в чате?

3. Почему бы не добавить это в свой вопрос? Или в комментариях? Если вы беспокоитесь о конфиденциальности, комментарии / ссылки в чате также записываются в SO навсегда. В любом случае, попробуйте var range = sheet.getRange(i, 3, 1, 12); (только одну строку) и / или addRange(months).addRange(range).setTransposeRowsAndColumns(true).setOption("useFirstColumnAsDomain", true)

4. эта строка работает одинаково (дублируется). Также у меня есть вертикальные данные. Я знаю, что вручную я могу создать диаграмму из вертикальных данных, мне нужно выяснить, как это сделать с помощью кода. Обновил сообщение.

5. Задана ли таблица по умолчанию, чтобы иметь не более 10 горизонтальных меток? У меня там максимум 10 записей с 25 месяцами, дублирующимися два раза. Мне нужно 12 месяцев или меньше, если у меня меньше месяцев.

Ответ №1:

Эта линия создала правильные горизонтальные данные:

.addRange(range).setTransposeRowsAndColumns(true).setOption("useFirstColumnAsDomain", true)