簡體   English   中英

自定義 Google Sheet Function 無任何原因更新

[英]Custom Google Sheet Function Updating Without Any Cause

我正在使用自定義 function 來提取 EVE Online 的價格數據,我只希望 function 在特定單元格更改時更新。 相反,它每 10 到 20 分鍾更新一次,這占用了我每天大量的 URL 提取配額。

往下看,您可以看到主要的 function 位於標有“倉庫庫存”的頁面中。 它提取“項目”列中項目的所有價格數據。 該單元格使用自定義 function 刷新,該自定義 function 會更改實用程序表中的單元格 B4。 當該單元格更改時,由於 IF/THEN 語句,它會更新自定義 function 中的值。 最后,價格被加載到主工作表中,並按“產品”列排序。

我還重新計算了“更改時”並關閉了迭代計算。

感謝您的閱讀以及您可以提供的任何幫助。

定制的 function 為:

    /**
* Query's Fuzz market API for the given types
* @param {range} A vertical range of type_ids.
* @return maxBuy and minSell for each type_id
* @customfunction
*/
function fuzzApiPriceData(type_ids) {
  if (!type_ids) throw 'type_ids is required';
  const ids = Array.isArray(type_ids) ? type_ids.map(id => id[0]) : [type_ids];
  const fuzz_price_data = JSON.parse(UrlFetchApp.fetch(`https://market.fuzzwork.co.uk/aggregates/?station=60008494&types=${ids.join(',')}`));
  return [['minSell', 'maxBuy']].concat(type_ids.map(type_id => [parseFloat(fuzz_price_data[type_id]['sell']['min']), parseFloat(fuzz_price_data[type_id]['buy']['max'])]));
}

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

我通常為此做的是:在單元格中放置一個復選框。 然后,在調用您的自定義 function 時,添加對該單元格的額外引用,即使該參數未包含在您的自定義 function 中。 每次您切換真/假時,您的自定義 function 將被重新激活。 然后,您還可以定義另一個 function 並使用僅更改 true/false 值的觸發器。 這是工作表“數據”單元格 A3 中的一個示例:即使自定義 function 僅考慮第一個和第二個參數,function 也是帶有 A1 的getDataJSON(C1,A2:U2,A1) https://docs.google.com/spreadsheets/d/1DN0Gfim0LC098zVgrUpt2crPWUn4pWfZnCpuuL1ZiMs/edit?usp=sharing

我認為這里有一個相當基本的誤解。

“自定義函數”旨在寫入工作表上的單元格 它們天生就設計為始終運行,不斷更新。

如果您嘗試運行自定義腳本,請從腳本編輯器本身執行此操作,您甚至不會在 ALL的單元格中編寫 function 。

我假設您沒有編寫您正在使用的“自定義函數”(?)所以將其轉換為寫入工作表上某個位置的腳本會有點困難(但並非不可能。)有一段時間,但您可能會更多地研究設計為在單元格中執行的自定義函數之間的區別。 以及設計為在時間觸發器上運行的腳本。

關於你的回答:

我希望 function 每天刷新,並且可以選擇通過單元格 Utility!B4 的內容手動刷新 function

我建議您使用Installable Triggers

  1. 時間驅動觸發器:它可以在每天的特定時間執行一個 function。
  2. 安裝的編輯觸發器:當特定單元格中的某個值發生變化時,它可以執行 function。

但是,如果您想手動執行 function,我建議您插入drawing為其分配 function

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM