2012-06-19 40 views
0

我已经在google docs中编写了一个脚本来使用= importXML函数,并且自己返回值,而不是在开始时和每小时都将函数放在那里加载,从而放慢速度。 基本上它使用D行中的数据(隐藏),将公式粘贴到B2中,然后用公式的值覆盖B2。然后我想重复这个顺序,但不知道如何 - 目前我只是重复了这个功能,并且改变了单元ID,我知道这是一个滑稽的东西。有人可以指导一个noob如何有效地做到这一点吗?在列表中重复列出一个函数,不需要重复代码

function pullValues() 
{ 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var cellref1 = sheet.getRange("D2"); 
var ID = cellref1.getValue(); 
var apistring = "http://api.eve-central.com/api/marketstat?usesystem=30000142&typeid=" + ID; 
var command = "importxml(\"" + apistring + "\", \"/evec_api/marketstat/type/sell/min\")"; 
var cellref2 = sheet.getRange("B2"); 
cellref2.setFormula(command); 
var val = cellref2.getValue(); 
cellref2.setValue(val); 
} 

https://docs.google.com/spreadsheet/ccc?key=0AjZlH_sGnj6vdDU4QWdyZTVTd2E4RUFXZnVEZlZJS3c#gid=0

回答

0

您必须通过使用一个for循环电子表格中的所有行进行迭代。有很多方法可以做到,下面的代码就是其中之一:

function pullValues() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 

    var startRow = 2; // First row of data to process 
    var lastRow = sheet.getLastRow(); // Last row of data to process 

    for (var i = startRow; i <= lastRow; i++) 
    { 
    var cellref1 = sheet.getRange("D" + i); 
    var ID = cellref1.getValue(); 
    var apistring = "http://api.eve-central.com/api/marketstat?usesystem=30000142&typeid=" + ID; 
    var command = "=ImportXML(\"" + apistring + "\", \"/evec_api/marketstat/type/sell/min\")"; 
    var cellref2 = sheet.getRange("B" + i); 
    cellref2.setFormula(command); 
    var val = cellref2.getValue(); 
    cellref2.setValue(val); 
    } 
}