我有一个简短的脚本,我试图从URL中获取数据并将其写入现有电子表格的表格。脚本如下:
function urlDataImport() {
var input = "https://reports.acc-q-data.com/clientreports/ecaldwell_201206192722/ecaldwell_20122722.txt";
// The code below gets the HTML code.
var response = UrlFetchApp.fetch(input);
var data = response.getContentText();
Logger.log(data);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ptSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("pt");
ptSheet.getActiveRange().setValues(data);
}
数据中的信息是制表符分隔的,并在日志中正确显示,但因为它是一个字符串我无法使用.setValues将其写入工作表 pt 而且我不确定如何以任何其他方式从URL获取信息。
我很抱歉这个问题的基本性质,但我对脚本非常陌生,所以任何帮助都会受到赞赏。
更新代码:
function ptDataImport() {
var input = "https://reports.acc-q-data.com/clientreports/ecaldwell_201206192722/ecaldwell_2012062.txt";
var response = UrlFetchApp.fetch(input); // Get the data from the URL as an object.
var data = response.getContentText(); // Convet the object to text
var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("pt"); // Get the sheet to write the data to
var rows = data.split('\n'); // Splits the text into rows
dataSheet.clear();
var dataSet = new Array();
for ( var i in rows){
dataSet[i] = rows[i].split('\t'); // Split the rows into individual fields and add them to the 2d array
}
dataSet.pop(); // Had a blank row at the bottom that was giving me an error when trying to set the range - need to make this conditional somehow
var numColumns = dataSet[0].length;
var numRows = dataSet.length;
var lastRow = dataSet[(numRows -1)];
dataSheet.getRange(1,1,numRows,numColumns).setValues(dataSet); // Get a range the size of the data and set the values
}
答案 0 :(得分:2)
解决方法是使用两个分割。首先,
var rows = data.split('\n');
然后
for ( var i in rows){
tmp = rows[i].split('\t'); // Use Serge's method if this doesn't work
/* Get the range here */
range.setValues([tmp]);
}
答案 1 :(得分:1)
Range.setValues()采用二维数组作为输入。
我不确定你想做什么。如果您只想将数据写入单元格,那么请使用这段代码
ptSheet.getActiveRange().setValues([[data]]);
如果您想将数据中的每个元素写入电子表格中的一行,那么您可以使用
var tmp = data.split(DELIMITER);
/* Get the correct range here */
range.setValues([tmp]);
注意在第一种情况和第二种情况下如何创建二维数组。
答案 2 :(得分:0)
我想最容易做的就是将这些标签转换为别的东西,例如逗号,这毕竟是csv的'c'来自......然后你可以把它写在任何你想要的地方。
例如:
commaString = tabString.replace(\t/g,',') ;
应该可以工作,但我不是regEx的专家......如果我错了,有人肯定会纠正它; - )