Функция ручной загрузки в Google Sheets - PullRequest
0 голосов
/ 28 ноября 2018

Написание скрипта пользовательских приложений Google Sheets.Я не могу придумать способ для 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 голосов
/ 28 ноября 2018

Я думаю, что ответ, который вы ищете, можно найти здесь . Вы будете использовать метод SpreadsheetApp.Flush () для пересчета формулы.Однако вы должны внести изменения в лист каким-либо образом, чтобы он все пересчитал.Вы можете прочитать больше об этом там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...