2012-06-19 70 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); 
    } 
}