编写Google表格自定义应用程序脚本。 我想不出reloadPrices()更新所有包含= getPrice(id)的单元格的方法
function getPrice(id)
{
Utilities.sleep(5000);
try
{
var api = "http://services.runescape.com/m=itemdb_rs/api/graph/";
var i = JSON.parse(UrlFetchApp.fetch(api + id + ".json"))["daily"];
var e = Object.keys(i).sort().reverse()[0];
return i[e];
var sheet = SpreadsheetApp.getActive().getSheetByName('Prices'); //replace 'example' with your actual sheet name
sheet.getRange('B1').setValue(new Date()); // Updates Cell B1 to local time.
}
catch(err)
{
return -100000;
}
}
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // gets opened spreadsheet
var menuEntries = [ {name: "Reload Prices", functionName: "reloadPrices"} ]; //adds element to ribbon sub menu
ss.addMenu("Grand Exchange", menuEntries); //adds ribbon
}
function reloadPrices() {
// I want this to reload all cells containing "=getPrice(id)" example "=getPrice(1404)*2"
}
答案 0 :(得分:0)
我相信您可以在here中找到所需的答案。您将使用SpreadsheetApp.Flush()方法重新计算公式。但是,您必须以某种方式对工作表进行更改,以便重新计算所有内容。您可以在此处了解更多信息。