2015-07-13 64 views
1

如何嵌入使用GAS電子表格中的兩個y軸的圖表?我需要類似this谷歌Apps腳本:嵌入兩個y軸的圖表中的電子表格

某事,這是我的代碼:

var range = grafData.getRange(2, 1, 10, 2) 
    var chart = sheetGraf.newChart() 
    .setPosition(2, 1, 0, 0) 
    .setChartType(Charts.ChartType.COLUMN) 
    .addRange(range) 
    .setOption('title', 'Sales and Profitability') 
    .setOption('series', {0: {axis: 'sales'}, 1: {axis: 'profitability'}}) 
    .setOption('axes', {y: { sales: {label: 'sales'}, profitability: {side: 'right', label: 'profitability'}}}) 
    .build(); 
    sheetGraf.insertChart(chart); 

這是返回: Chart

數據源被正確選擇的是:

Datasource

Idealy ,我會在次要斧頭中有一個盈利能力組合圖是,但那是不可能的,對吧?那麼,我如何擁有2列和2個y軸?

謝謝。

+1

嘗試更改列「盈利」爲文本的單元格的格式。在電子表格中選擇該列,然後轉到格式 - >數字 - >純文本。然後圖表將採用這些值作爲參考,而不是圖表的值。嘗試一下,讓我知道如果它不適合你。 – Gerardo

+0

感謝您的幫助,但效果不佳(請參閱http://postimg.org/image/4p5pcv7x9/)。另外,我需要使用腳本來完成整個過程。 –

+1

你是對的,我用A列的盈利能力和B列的銷售值進行了測試。你可以試試這種方式。我會繼續測試。 – Gerardo

回答

1

我這裏寫了一個例子。您可以通過這樣的腳本插入圖表。

  function sheetChart(){ 
       try{ 
       var sheet = SpreadsheetApp.openById(DriveApp.getFilesByName('testSheet').next().getId()); 
       sheet.insertImage(myChart(),1,1) 
       } catch(err){ 
       Logger.log(err); 
       } 
      } 

      function myChart() { 
       try{ 
       var data = Charts.newDataTable() 
        .addColumn(Charts.ColumnType.STRING, 'Month') 
        .addColumn(Charts.ColumnType.NUMBER, 'In Store') 
        .addColumn(Charts.ColumnType.NUMBER, 'Online') 
        .addRow(['January', 10, 1]) 
        .addRow(['February', 12, 1]) 
        .addRow(['March', 20, 2]) 
        .addRow(['April', 25, 3]) 
        .addRow(['May', 30, 4]) 
        .build(); 

       var chart = Charts.newAreaChart() 
        .setDataTable(data) 
        .setStacked() 
        .setRange(0, 40) 
        .setTitle('Sales per Month') 
        .build(); 
       }catch(err){ 
       Logger.log(err); 
       } 
       return chart.getBlob(); 
      } 

從那裏你可以編輯收集你需要的行和列的值。

+0

感謝您的幫助。我的問題是如何在圖表上有2個Y軸。一個小學生,一​​個小學生,一​​個小學生。第一個是銷售數據,第二個是盈利數據。您的腳本完美運行,但圖表只包含一個y軸。看例如:https://jsfiddle.net/nuno/Lf8fk52b/ –

0

這可能是有點晚,但也許對別人有用的,同時,這也是一種解決方法 - 而不是解決方案。

我試圖生成一個批次含有CSV文件的文件夾雙-Y圖表的電子表格,並遇到了這個同樣的問題。

的解決方法是創建「模板」電子表格,並手動設置在UI的圖表中,設置與樣品數據的軸線(和任何其他)範圍內,那麼清除圖表用的數據。在您的腳本中創建該電子表格的副本並每次粘貼新數據(例如,使用帶數組的.setValues)。該圖表每次都會以正確的雙y設置生成,並適應不同的大小範圍。

例如,創建一個像這樣的模板文件的副本,

var targetFolder = DriveApp.getFolderById("<target_folder_id_goes_here>"); 
var ssTemplate = DriveApp.getFileById("<template_file_id_goes_here>"); 
var ssFile = ssTemplate.makeCopy("filename", targetFolder); 

在此之後,你可以隨時chart.modify()進一步編輯圖表

https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart#modify

1

你這是怎麼在Google Charts中可以有雙Y軸:

<html> 
<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script type="text/javascript"> 

     google.load("visualization", "1", {packages:["corechart"]}); 
     google.setOnLoadCallback(drawChart); 
     function drawChart() { 
     var data = google.visualization.arrayToDataTable([ 
     ['date', 'data1', 'data2', 'percentage'], 
     [ "1 Mar", 289, 94, 0.10], [ "2 Mar", 295, 96, 0.20], [ "3 Mar", 300, 104, 0.30], 
     [ "4 Mar", 306, 124, 0.40], [ "5 Mar", 311, 142, 0.50], [ "6 Mar", 317, 153, 0.60], 
     [ "7 Mar", 322, 158, 0.70], [ "8 Mar", 328, 164, 0.80], [ "09Mar", 334, 164, 0.90], 
     ["10 Mar", 339, 168, 0.80], ["11 Mar", 345, 169, 0.70], ["12 Mar", 351, 180, 0.60], 
     ["13 Mar", 357, 190, 0.50], ["14 Mar", 363, 200, 0.40], ["15 Mar", 369, 210, 0.30], 
     ["16 Mar", 375, 220, 0.20], ["17 Mar", 381, 230, 0.10], ["18 Mar", 387, 235, 0.00], 
     ["19 Mar", 393, 240, -0.10], ["20 Mar", 399, 250, -0.20], ["21 Mar", 406, 245, -0.30], 
     ["22 Mar", 412, 235, -0.40], ["23 Mar", 418, 235, -0.50], ["24 Mar", 425, 240, -0.60], 
     ["25 Mar", 431, 245, -0.70], ["26 Mar", 438, 255, -0.80], ["27 Mar", 444, 260, -0.90], 
     ["28 Mar", 451, 276, -0.80], ["29 Mar", 458, 280, -0.70], ["30 Mar", 464, 295, -0.60], 
     ["31 Mar", 471, 310, -0.50], 
     ]); 
     var options = { 
      title: 'Leads', 
      hAxis: {showTextEvery: 5}, 
      vAxes: {0: {viewWindowMode:'explicit', 
         viewWindow:{ 
            max:510, 
            min:82 
            }, 
         gridlines: {color: 'transparent'}, 
         }, 
        1: {gridlines: {color: 'transparent'}, 
         format:"#%"}, 
        }, 
      series: {0: {targetAxisIndex:0}, 
        1:{targetAxisIndex:0}, 
        2:{targetAxisIndex:1}, 
        }, 
      colors: ["red", "green", "orange"], 
      chartArea:{left:100,top:100, width:500, height:150}, 
     }; 

     var chart = new google.visualization.LineChart(document.getElementById('chart_id')); 
     chart.draw(data, options); 
     } 
</script> 

<div id="chart_id" style="width: 800px; height: 300px;"></div> 
</html> 

工作荷蘭國際集團例子在這裏:JSFiddle

相關問題