iInfo 資訊交流: 在Google Spreadsheet使用Google Apps Script畫圖

最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2017/02/20] 近來有網友詢問 MultiCharts 與 Excel 畫冰火能量圖 (8)MultiCharts 與Excel 畫冰火能量圖(11) --- 更名「台股儀表板」 文章中教學檔案取得方式,有興趣的朋友可透過 Line了解詳情 (請勿以為是免費分享),Line : aminwhite5168。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,於 7/21、7/22 兩天開課,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲,5/30 前早鳥優惠票,請盡快把握機會,歡迎券商、大專院校邀約講座。

[公告2018/06/01] 台指能量儀表板教學課程 7/14 (六) 下午 1:30 ~ 4:30,15人開班,課程如網頁內容 台北班:台指能量儀表板

2016年12月23日 星期五

在Google Spreadsheet使用Google Apps Script畫圖

前面 Google Spredsheet 抓 SGX 摩台未平倉量與摩台次月契約開倉成本Google Spredsheet 抓 TXF 台指未平倉量與台指次月契約開倉成本 文章在Google Spreadsheet上抓資料,並使用Google Apps Script畫圖,這裡明說一下Google Apps Script畫圖方法,有興趣的朋友可以自行繪製。
在Google雲端硬碟中Google試算表中,點選工具、指令碼編輯器。

輸入以下繪圖程式碼,執行即可。

繪圖程式碼。
function buildChart()
{
  var chart = null;
  var insertChart = true;
  var title, embededChartBuilder;
  var allchart = sheet.getCharts();  
  var titlename;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('201701台指未平倉量');

  /* 圖表標題名稱 */
  titlename = '台指 201701 月走勢圖與成本';
  
  /* 確認是否有相同 圖表標題名稱 的圖存在 */
  for (var j = 0; j < sheet.getCharts().length; j++) 
  {
    title = allchart[j].getOptions().get("title") + "";
    if (title.indexOf(titlename) > -1) {
      chart = allchart[j];
      insertChart = false;
      break;
    }
  }
  
  /* 存在圖表,則移除上一次圖表的屬性,不存在則建立新的圖表物件 */
  if (insertChart) 
  {
    /* 取得新建立的圖表Handle */
    embededChartBuilder = sheet.newChart().asLineChart();
  } 
  else 
  {
    /* 取得修改圖表的Handle */
    embededChartBuilder = chart.modify().asLineChart();  
    var ranges = chart.getRanges();
    ranges.forEach(function(range) {
      /* 移除圖表屬性設定 */
      embededChartBuilder.removeRange(range);
    });
  }
  
  /* 圖表屬性設定 */
  /* 指定圖表類行為折線圖 */
  chart = embededChartBuilder/*.setChartType(Charts.ChartType.LINE)*/
          /* 設定X軸資料來源 */
          .addRange(sheet.getRange("A:A"))
  
          /* 設定Y軸資料來源 */
          .addRange(sheet.getRange("E:E"))
          .addRange(sheet.getRange("Z:Z"))
  
          /* 設定圖表標題名稱 */
          .setTitle(titlename)
  
          /* 設定主座標軸名稱 */
          .setOption('vAxis.title', "收盤價")
  
          /* 設定X軸標軸名稱 */
          .setOption('hAxis.title', "日期")
  
          /* 設定圖例位置 */
          .setOption('legend', 'top')
  
          /* 設定繪圖區範圍 */
          .setOption('chartArea', {left:'10%',top:'15%',width:'85%',height:'65%'})
  
          /* 設定圖表長寬 */
          .setOption('width', 605)
          .setOption('height',420)
  
          /*設定圖表繪製位置 */
          .setPosition(2, 2, 0, 0)
  
          /* 執行上面所有設定 */
          .build();
  
  /* 建立或更新圖表 */
  if (insertChart) {
    sheet.insertChart(chart);
  } else {
    sheet.updateChart(chart);
  }  
}

參考資料: