0

=importXML関数を使用して値を独自に返すようにGoogleドキュメントにスクリプトを作成しました。開いたときに関数をロードしたままにしておくと、1時間ごとに速度が低下します。基本的には、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 ループを使用して、スプレッドシート内のすべての行を反復処理する必要があります。これには多くの方法がありますが、次のコードはその 1 つです。

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 に答える