簡體   English   中英

谷歌表格腳本獲取圖表的標簽?

[英]Google Sheets Script get a chart's labels?

所以,我有一張涵蓋一年數據的表格,以及一個在觸發器上更新以具體顯示每個月的數據的條形圖。 它還會在更新時為每個條設置顏色。 問題是我進行顏色更改的方式,它在每個 position 中始終具有相同的顏色,無論條形的 label 是什么。 (即,如果它按降序排序,如果 X 的數字最小,它是藍色的,Y 是第二個和紅色的,等等。然后下個月 Y 的數量較少,所以它是第一個和藍色,X 是紅色)。 我需要基於 label 設置 colors (所以 X 是藍色的,無論它在給定月份是否大於或小於 Y)。 我不知道如何引用標簽來設置 colors。

我更新圖表並設置 colors 的代碼是:

function updateRangeBar(sheet, range, chart)
{
  
  chart = chart.modify()
    .clearRanges()
    .addRange(range)
    .setOption('series.0.items.0.color', "red")
    .setOption('series.0.items.1.color', "blue")
    .setOption('series.0.items.2.color', "yellow")
    .setOption('series.0.items.3.color', "green")
    .setOption('series.0.items.4.color', "orange")
    .setOption('series.0.items.5.color', "black")
    .build()
  sheet.updateChart(chart); 
}

我想象的代碼看起來像什么

function updateRangeBar(sheet, range, chart)
{
  var redIndex, blueIndex, yellowIndex, greenIndex, orangeIndex, blackIndex
  for(i = 0; i < [chartBarItemsLength]; i++)
  {
    if([chartBarItemLabel] == "DataHeaderForRed")
    {
       redIndex = i
    }
    elseIf([chartBarItemLabel] == "DataHeaderForBlue")
    {
       blueIndex = i
    }
  }
  
  chart = chart.modify()
    .clearRanges()
    .addRange(range)
    .setOption('series.0.items.'+redIndex+'.color', "red")
    .setOption('series.0.items.'+blueIndex'+.color', "blue")
    .setOption('series.0.items.+yellowIndex'+.color', "yellow")
    .setOption('series.0.items.+greenIndex'+.color', "green")
    .setOption('series.0.items.+orangeIndex'+.color', "orange")
    .setOption('series.0.items.+blackIndex'+.color', "black")
    .build()
  sheet.updateChart(chart); 
}

其中 [chartBarItemLabel] 和 [chartBarItemsLength] 是我需要幫助找到的方法。

想出了一個答案,盡管更好的選擇總是很好。

function updateRangeBar(sheet, range, chart)
{
 
  var subRange = range.getSheet().getRange(range.getRow(), range.getColumn(), range.getHeight(), 1)
  chart = chart.modify()
    .clearRanges()
    .addRange(range)
    .build()
  for(i = 0; i < subRange.getHeight(); i++)
  {
    var val = range.getSheet().getRange((subRange.getRow()+(i+1)), subRange.getColumn()).getValue()
      
      if(val.toString() == BLUE_TYPE)
      {
        chart = chart.modify().setOption('series.0.items.'+i+'.color', BLUE_RGB).build()
      }
      else if(val.toString() == RED_TYPE)
      {
        chart = chart.modify().setOption('series.0.items.'+i+'.color', RED_RGB).build()
      }
      else if(
      ...
  }
  sheet.updateChart(chart); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM