Ошибка макроса Google Apps Script при форматировании минимальных / максимальных значений по оси Y

#google-apps-script #google-sheets #charts #google-visualization #embedded-resource

#google-apps-script #google-sheets #Диаграммы #google-визуализация #встроенный ресурс

Вопрос:

Я новичок в Apps Script, прошу прощения, если это глупый вопрос, но я не смог найти ответ. Я использую Google Sheets для отображения температуры моего блока питания. Я создал макросы, которые выбирают диапазон данных, вставляют диаграмму и изменяют форматирование чего-либо на диаграмме, за исключением одного элемента, минимального максимального значения по оси Y, которое, по иронии судьбы, является единственным, что мне интересно изменить.

Ниже приведен макрос, он выполняет одну вещь, изменяет минимальное максимальное значение на 40/90. Для первой записи вместо значения вводится NaN. Я пытался изменить это, но не помогло.

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

Мы высоко ценим любые рекомендации, которые вы можете предоставить.

 function FormatYAxis() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B:B').activate();
  var sheet = spreadsheet.getActiveSheet();
  var charts = sheet.getCharts();
  var chart = charts[charts.length - 1];
  sheet.removeChart(chart);
  chart = sheet.newChart()
  .asLineChart()
  .addRange(spreadsheet.getRange('B1:B552'))
  .setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
  .setTransposeRowsAndColumns(false)
  .setNumHeaders(1)
  .setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
  .setOption('useFirstColumnAsDomain', false)
  .setOption('curveType', 'none')
  .setOption('domainAxis.direction', 1)
  .setOption('isStacked', 'false')
  .setOption('title', 'GPU Temp')
  .setRange(40, NaN)
  .setOption('vAxes.0.viewWindowMode', 'explicit')
  .setOption('series.0.labelInLegend', 'GPU Temp')
  .setPosition(3, 4, 58, 1)
  .build();
  sheet.insertChart(chart);
  charts = sheet.getCharts();
  chart = charts[charts.length - 1];
  sheet.removeChart(chart);
  chart = sheet.newChart()
  .asLineChart()
  .addRange(spreadsheet.getRange('B1:B552'))
  .setMergeStrategy(Charts.ChartMergeStrategy.MERGE_COLUMNS)
  .setTransposeRowsAndColumns(false)
  .setNumHeaders(1)
  .setHiddenDimensionStrategy(Charts.ChartHiddenDimensionStrategy.IGNORE_BOTH)
  .setOption('useFirstColumnAsDomain', false)
  .setOption('curveType', 'none')
  .setOption('domainAxis.direction', 1)
  .setOption('isStacked', 'false')
  .setOption('title', 'GPU Temp')
  .setRange(40, 90)
  .setOption('vAxes.0.viewWindowMode', 'explicit')
  .setOption('series.0.labelInLegend', 'GPU Temp')
  .setPosition(3, 4, 58, 1)
  .build();
  sheet.insertChart(chart);
};
  

Ответ №1:

следующие параметры позволят установить минимальные и максимальные значения по оси y.
однако значения, отображаемые по оси y, должны быть числовыми, а не строковыми…

 .setOption('vAxis.viewWindow.min', 40)
.setOption('vAxis.viewWindow.max', 90)
  

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

1. Спасибо за ответ. Я пробовал использовать эти строки, но они не влияют на ось Y. Они остаются равными 0 и 100. Я проверил, что данные, отображаемые на оси Y, являются числом, и также вручную изменил его. Тем не менее, если я добавлю следующую строку, это изменит ось Y. Есть идеи, почему это работает, а другие нет? Когда я добавляю строки, которые вы предоставили, макрос выполняется до завершения, записанный макрос выдает ошибки. .SetOption(‘VAXes’, {0: {title: ‘Температура графического процессора’, TextStyle: {FontSize: 10}, titleTextStyle: {FontSize: 8}, viewWindow: {min: 40}}})

2. опция vAxis задает параметры для всех осей y, если у вас их несколько. vAxes позволяет указать параметры для конкретной оси y, где 0 это первая ось y слева. если вы используете оба, то одно может переопределять другое. в любом случае, вы должны иметь возможность использовать viewWindow.max amp; viewWindow.min для любого из них…