0

連邦準備制度からいくつかのデータを取得して、スプレッドシートに貼り付けようとしています。

これが私のコードです

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に貼り付けます。「日付」と「値」に続くデータを2列に貼り付けたいだけです。

誰かがこれを手伝ってくれますか?皆さんにとってはとても簡単だと思います。

ありがとう。

4

1 に答える 1

1

少しの文字列操作を使用すると、これは非常に簡単になります。

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

まず、小さなイントロテキストを削除します。次に、文字列をデータの行を含む配列に分割します。各行(文字列)も配列に分割します。これにより、下部で使用できる配列が得られますsetValues()。これは1つのセルだけではないため、正確な幅と高さを指定する必要があります。そうしないと失敗します。

そこのどこかのデータを見たいのなら、私はお勧めしますLogger.log(splitData);

于 2013-01-05T20:00:19.573 に答える