在列表中重复一个函数,而不重复代码

时间:2012-06-19 18:48:01

标签: google-docs google-apps-script google-sheets

我已经在google docs中编写了一个脚本来使用= 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

1 个答案:

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