# Week 7(10/23):用Google Chart讀取Google試算表 ## 從Google試算表中讀取資料並顯示 要讀取的試算表網址寫法: https://docs.google.com/spreadsheets/d/瀏覽器網址列上的網址擷取序號部分/gviz/tq?sheet=工作表名稱 範例程式碼: ```html= <!DOCTYPE html> <html> <head> <!-- 利用Google Visualization讀取Google Sheet https://www.labnol.org/code/google-sheet-d3js-visualization-200608 --> <script src="https://www.gstatic.com/charts/loader.js"></script> <script> // https://developers.google.com/chart/interactive/docs/quick_start // Load the Visualization API and the corechart package. google.charts.load('current', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded.//設定API有空時回傳資料的對象。 google.charts.setOnLoadCallback(init); function init() { //url放要讀取的表單網址 var url ='https://docs.google.com/spreadsheets/d/1QScI5d56Kh-LGywY4WR6EvRGPcalFQYUAdqMxbFVDvk/gviz/tq?sheet=工作表1'; var query = new google.visualization.Query(url);//下達查詢指令 query.setQuery('select *');//選取所有資料 query.send(processSheetsData); } function processSheetsData(response) { var data = response.getDataTable(); var columns = data.getNumberOfColumns(); //行數 var rows = data.getNumberOfRows(); //列數 var str = ""; for (var r=0 ; r<rows ; r++) { str += data.getFormattedValue(r,0) + "(" + data.getFormattedValue(r,1) + ")" + " 訂 " + data.getFormattedValue(r,2) + " : " + data.getFormattedValue(r,3) + "個 <br />"; }//data.getFormattedValue(r,0):取得第r列0行的資料 document.getElementById("demo").innerHTML = str; } </script> </head> <body> <div id="demo"></div> </body> </html> ``` 更多語法:https://developers.google.com/chart/interactive/docs/querylanguage?hl=zh-tw#language-clauses ## 應用:生成卡片 google試算表:https://docs.google.com/spreadsheets/d/1TNbPscrJgsMjxd5sm5hiIIBnLGXpnWm57GdXxzsAPbk/edit#gid=0 自己練習程式碼: ```html= <!DOCTYPE html> <html> <head> <!-- Compiled and minified CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"> <!-- Compiled and minified JavaScript --> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> <!-- 利用Google Visualization讀取Google Sheet https://www.labnol.org/code/google-sheet-d3js-visualization-200608 --> <script src="https://www.gstatic.com/charts/loader.js"></script> <script> // https://developers.google.com/chart/interactive/docs/quick_start // Load the Visualization API and the corechart package. google.charts.load('current', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded. google.charts.setOnLoadCallback(init); x=["","","","","","","","","","",""]; a=["","","","","","","","","","",""]; num=["","","","","","","","","","",""]; function init() { var url = 'https://docs.google.com/spreadsheets/d/1TNbPscrJgsMjxd5sm5hiIIBnLGXpnWm57GdXxzsAPbk/gviz/tq?sheet=工作表1'; var query = new google.visualization.Query(url); query.setQuery('select *'); query.send(processSheetsData); } function processSheetsData(response) { var data = response.getDataTable(); var columns = data.getNumberOfColumns(); var rows = data.getNumberOfRows(); var str = ""; for (var r=0 ; r<rows ; r++) { x[r]=data.getFormattedValue(r,0); a[r]=data.getFormattedValue(r,1); num[r]=data.getFormattedValue(r,2); } //document.getElementById("demo").innerHTML = str; } function f() { var s=''; for(i=0;i<x.length;i++){ s += `<div class="col s12 m6 l4"> <div class="card"> <div class="card-image"> <div id="demo"> <img src="${x[i]}"> </div> <span class="card-title">MOMO</span> </div> <div class="card-content" id="text"> <p>${a[i]}</p> </div> <div class="card-action"> <a href="test_gomaji.html?XXX=${num[i]}">This is a link</a> </div> </div> </div>`; } document.getElementById("tt").innerHTML = s; } </script> <!--Import Google Icon Font--> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <!--Import materialize.css--> <link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection"/> <!--Let browser know website is optimized for mobile--> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> </head> <body> <!--JavaScript at end of body for optimized loading--> <script type="text/javascript" src="js/materialize.min.js"></script> <div class="row" id="tt"> </div> <a class="waves-effect waves-light btn" href="javascript:f();"><i class="material-icons left">pets</i>Create Card</a> </body> </html> ``` ## 相關資料 陳育毅老師網站:https://nchu-mis-html5.blogspot.com/2017/07/tabletopjs.html