Google表格中的手动重新加载功能

时间:2018-11-28 12:05:37

标签: google-apps-script google-sheets

编写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"
}

1 个答案:

答案 0 :(得分:0)

我相信您可以在here中找到所需的答案。您将使用SpreadsheetApp.Flush()方法重新计算公式。但是,您必须以某种方式对工作表进行更改,以便重新计算所有内容。您可以在此处了解更多信息。