Я не уверен, поможет ли это вам, но вы можете пожать все, что сможете от него.Я играл с Google Finance и собрал некоторые данные, взяв 5-минутные образцы ячеек Google Finance из 15 акций.График всех акций был довольно бессмысленным, поэтому я создал график для каждой из них, просто переключая столбцы.Я также был заинтересован в получении изображений диаграммы, но мне пришлось подождать, пока последняя диаграмма не будет отрисована, поэтому у меня есть слушатель, который получает обратный вызов с последней диаграммы.
Вот HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<title>Data Dialog</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script>
var rCB=false;
var chartA=[];
var gdObj={};
$(function(){
google.script.run
.withSuccessHandler(updateSelect)
.getDataSheetsArray();
});
function updateSelect(vA){
var id='sel1';
var select = document.getElementById(id);
select.options.length = 1;
for(var i=0;i<vA.length;i++)
{
select.options[i+1] = new Option(vA[i],vA[i]);
}
}
function drawCharts(){
do{
//nothing
}while(!rCB);
var page=$('#sel1').val();
google.script.run
.withSuccessHandler(function(dObj){
gdObj=dObj;
chartA=[];
$('#charts').html('');
for(var i=0;i<dObj.dataSetKeyA.length;i++){
var data = new google.visualization.DataTable();
data.addColumn('string',dObj.dataSetHeaderA[i][0]);
data.addColumn('number',dObj.dataSetHeaderA[i][1]);
data.addRows(dObj[dObj.dataSetKeyA[i]]);
var divId='div-' + i;
$("#charts").append('<div id="' + divId + '" style="border:1px solid black;margin:0 0 2px 0;"></div>');
var options={
title:dObj[dObj.dataSetHeaderA[i][1]],
fontSize: 14,
fontName: 'Roman',
width:600,
height:300,
pointSize:4,
stroke:'#000',
strokeWidth:2,
hAxis:{slantedText:true,slantedTextAngle:70,textStyle:{color:'#333300',fontName:'Verdana',fontSize:8,bold:true}},
legend:{position:'top'},
chartArea:{left:75,top:75,width:'80%',height:'40%'},
vAxes:[{title:'Stock Price',titleTextStyle:{color:'#0000CC',fontName:'Verdana',fontSize:12,bold:true,italic:false},textStyle:{color:'#CC0000',fontName:'Verdana',fontSize:10,bold:true,italic:false}}]
};
var chart=new google.visualization.LineChart(document.getElementById(divId));
if(i==dObj.dataSetKeyA.length-1){
google.visualization.events.addListener(chart, 'ready', getImages);
}
chartA.push([chart,divId]);
chart.draw(data,options);
}
})
.getDataSets(page);
}
function getImages(){
var chtImgObj={};
chtImgObj['keyA']=[];
for(var j=0;j<chartA.length;j++){
chtImgObj.keyA.push(gdObj.dataSetHeaderA[j][1]);
chtImgObj[gdObj.dataSetHeaderA[j][1]]=chartA[j][0].getImageURI();
//document.getElementById(chartA[j][1]).innerHTML='<img src="' + chartA[j][0].getImageURI() + '" />';
console.log('\nTicker Symbol: %s\n URI: %s\n',gdObj.dataSetHeaderA[j][1],chartA[j][0].getImageURI());
}
/*
google.script.run
.withSuccessHandler(function(){alert("Document has charts.");})
.addToDoc(chtImgObj);
*/
}
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(function(){rCB=true;});
console.log('MyCode');
</script>
</head>
<body>
<div id="wrapper">
<div id="controls">
<select id="sel1" onchange="drawCharts();">
<option value="" selected>Select Sheet By Name</option>
</select>
</div>
<div id="charts"></div>
</div>
</body>
</html>
И это единственный GS:
function getDataSets(shtName){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(shtName);
var rg=sh.getDataRange();
var vA=rg.getValues();
var dObj={};
var dataSetKeyA=[];
var dataSetHeaderA=[];
for(var c=1;c<vA[0].length;c++){
var vB=[];
dataSetHeaderA.push([vA[0][0],vA[0][c]]);
for(var i=1;i<vA.length;i++){
vB.push([vA[i][0].slice(11),vA[i][c]]);
}
var dataSetKey='TimeStampAndColumn' + Number(c+1);
dObj[dataSetKey]=vB;
dataSetKeyA.push(dataSetKey);
}
dObj['dataSetKeyA']=dataSetKeyA;
dObj['dataSetHeaderA']=dataSetHeaderA;
sh=ss.getSheetByName('StockPrices');
rg=sh.getRange(1,2,2,sh.getLastColumn()-1);
var vC=rg.getValues();
for(var i=0;i<vC[0].length;i++){
dObj[vC[0][i]]=vC[1][i];
}
return dObj;
}
Вот как выглядит набор данных: