最新消息

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

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

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

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);
  }  
}

參考資料: