Google apps script 解析从html获取的数据

Google apps script 解析从html获取的数据,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正试图从美联储获得一些数据并粘贴到我的电子表格中 这是我的代码 function myFunction() { var response = UrlFetchApp.fetch("http://research.stlouisfed.org/fred2/data/TWEXMANL.txt"); a=response.getContentText(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var InputSheet = ss.get

我正试图从美联储获得一些数据并粘贴到我的电子表格中

这是我的代码

function myFunction() {
var response = UrlFetchApp.fetch("http://research.stlouisfed.org/fred2/data/TWEXMANL.txt");
a=response.getContentText();
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var InputSheet = ss.getSheetByName("Sheet5"); 
InputSheet.getRange("E5:E5").setValue(a); 
}
此代码将所有输出粘贴到E5中。我只想将“日期”和“值”后面的数据粘贴到两列中

有人能帮我吗?我相信这对你们来说很简单


谢谢。

使用一点字符串操作,这变得非常简单:

function myFunction() {
  var response = UrlFetchApp.fetch("http://research.stlouisfed.org/fred2/data/TWEXMANL.txt");
  a=response.getContentText();
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var InputSheet = ss.getSheetByName("Sheet1"); 

  //Slice off the text above the columns
  var allData = a.slice(a.indexOf("DATE         VALUE"));

  //Trim spaces between date and value to just 1 space for splitting
  allData = allData.replace(/ +/g, " ");

  //Split the text so each line is a row
  var splitData = allData.split("\n");

  //For some reason, there is an extra line, so remove it
  splitData.pop();

  //Split each row so data is one column and value is another
  for(var i = 0; i < splitData.length; i += 1) {
    splitData[i] = splitData[i].split(" ");
  }

  //Save to spreadsheet. +4 because you start at E5. Note the change to F on the right.
  InputSheet.getRange("E5:F" + (splitData.length + 4)).setValues(splitData);
}
函数myFunction(){
var response=UrlFetchApp.fetch(“http://research.stlouisfed.org/fred2/data/TWEXMANL.txt");
a=response.getContentText();
var ss=SpreadsheetApp.getActiveSpreadsheet();
var InputSheet=ss.getSheetByName(“Sheet1”);
//切掉列上方的文本
var allData=a.slice(a.indexOf(“日期值”);
//将日期和值之间的空格修剪为仅1个空格以进行拆分
allData=allData.replace(/+/g,“”);
//拆分文本,使每行成为一行
var splitData=allData.split(“\n”);
//由于某些原因,有一个额外的行,所以删除它
splitData.pop();
//拆分每行,使数据为一列,值为另一列
对于(变量i=0;i
我先把介绍文字删掉。然后,我将字符串拆分为包含数据行的数组。我也将每一行(一个字符串)拆分为一个数组。这给了我一个数组,我可以在底部使用
setValues()。因为这不仅仅是一个单元格,我必须指定确切的宽度和高度,否则它会失败


如果您想查看其中任何一点的数据,我建议
Logger.log(splitData)

哦,如果您不想要日期/值行,因为您有自己的标题,请在弹出之前或之后添加
splitData=splitData.slice(1)
。这将删除第一行。嗨,弗雷德里克。我还有一个问题。我现在正在做的其他事情不需要粘贴到电子表格中,但我需要进一步拆分数组。我想了一些类似于a=splitData[I].split(“”)的东西,但是这不起作用。我希望能够处理像splitData[0][3]这样的每个元素。现在这只给了我第一个元素的第四个字符。不起作用的原因是第一个
split
返回一个数组,第二个
split
尝试拆分它。如果将所有“”替换为“”,则可以按“”拆分,以获得所需的结果
替换(//g,“,”)。拆分(“,”
将用逗号替换所有空格,然后用逗号拆分。