0

我在谷歌文档中编写了一个脚本来使用 =importXML 函数并自行返回值,而不是让函数在打开时加载并每小时减慢速度。基本上它使用 D 行(隐藏)中的数据,将公式粘贴在 B2 中,然后用公式的值覆盖 B2。然后我想在列表中重复这一点,但只是不知道如何 - 目前我只是重复了该功能并更改了单元 ID,我知道这是一个讽刺。有人可以指导菜鸟如何有效地做到这一点吗?

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

4

1 回答 1

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);
  }
}
于 2012-06-19T22:22:48.847 回答