[英]Extracting data from gmail into a spreadsheet using Google Apps scripts
[英]Extracting data from API to Spreadsheet using Google Appscript
我正在尝试基于DataDT的 1 分钟外汇数据的优秀 API 构建一个电子表格。 很简单:对于给定的日期和时间,我需要来自 DataDT 的开盘价和收盘价。 例如,在以下情况下,日期+时间是输入,打开和关闭将是输出。
换句话说,它会从这个开始:
Date Time Pair Open Close
04/03/2019 20:30 USDJPY
04/03/2019 21:30 USDJPY
04/03/2019 22:41 USDJPY
对此:
Date Time Pair Open Close
04/03/2019 20:30 USDJPY 111.478 111.475
04/03/2019 21:30 USDJPY 111.482 111.465
04/03/2019 22:41 USDJPY 111.456 111.458
(链接到GSpreadsheet )
在 Ben Collins 关于将 api 连接到 GSpreadsheets 的优秀教程之后,我一直在尝试从 API 中获取数据,但鉴于此 API 中的对象具有完全不同的格式,我还没有想出处理它们的方法。
到目前为止,这是我的 Google Appscript 代码:
function callDataDT() {
// Call the DataDT API
var response = UrlFetchApp.fetch("http://www.datadt.com/api/data/AUDCAD/1/20190403/20190404?api_token=s3MoVn4GAJRJhKcdNJ6zZugFN2C92SBv");
var json = response.getContentText();
var data = JSON.parse(json);
}
function displayFXData() {
// pick up the search term from the Google Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var datetime = sheet.getRange(2,13).getValue();
var forexArray = [data]
Logger.log(forexArray);
}
继续,我试图了解如何 1) 仅获取电子表格中 date_time 等于 date_time 的对象,2) 在电子表格中输出该对象的打开和关闭值,以及 3) 迭代每个非空行。 如果这个问题过于基本,我提前道歉。 我仍然是 Javascript 的初学者,但我已经尝试了几天试图了解如何解决这个问题,但无济于事。 我很感激你给我的任何提示。
作为旁注,我想知道是否可以直接修改 URL,使其仅输出具有给定 date_time 的对象,但我认为这是不可能的。
谢谢阅读,
大卫。-
这个使用您的过滤器值
function getDataDT1(filter) {
var sr=3
var filter=filter||'';//You can test this function by providing a default here like '2019-04-03 20:28:00'
var r=UrlFetchApp.fetch("http://www.datadt.com/api/data/AUDCAD/1/20190403/20190404?api_token=s3MoVn4GAJRJhKcdNJ6zZugFN2C92SBv");
var data=JSON.parse(r.getContentText("UTF-8"));
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.clearContents();
var pair='USDJPY';
var a=[['','','Without V8','',''],['Date','Time','Pair','Open','Close']];
if(filter) {//if the filter is null then no filtering takes place
var dat=new Date(filter);
var dtv=new Date(dat.getFullYear(),dat.getMonth(),dat.getDate(),dat.getHours(),dat.getMinutes()).valueOf();
}
data.forEach(function(r,i){
var dt=r.DATE_TIME.split(' ');
var sd=new Date(r.DATE_TIME);
var sdv=new Date(sd.getFullYear(),sd.getMonth(),sd.getDate(),sd.getHours(),sd.getMinutes()).valueOf();
if(sdv==dtv || !filter) {//no filtering if filter is null
var d=dt[0].split('-');
var t=dt[1].split(':');
var ds=Utilities.formatString('%s/%s/%s',d[1],d[2],d[0]);
var ts=Utilities.formatString('%s:%s',t[0],t[1]);
a.push([ds,ts,pair,data[i].OPEN.toFixed(3),data[i].CLOSE.toFixed(3)]);
}
});
if(a) {
sh.getRange(sh.getLastRow()+1,1,a.length,a[0].length).setValues(a);
}else{
SpreadsheetApp.getUi().alert('No items found');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.