#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-sheets
Вопрос:
Я пытаюсь вызвать этот ответ API, используя пользовательскую функцию, в которой я могу изменить параметры. Это мой код:
function callCandles(pair, start, end) {
var response = UrlFetchApp.fetch("https://api-pub.bitfinex.com/v2/candles/trade:1D:" "pair" "/hist?limit=1000amp;start=" "start" "amp;end=" "end" "amp;sort=-1");
var fact = JSON.parse(response.getContentText()); //parse the data from the API and store it in the variable data and convert response to text format//
return fact;
}
Это то, что я набираю в электронной таблице:
=callCandles(tBTCUSD,"1577841154000","1606785154000")
Но когда я это делаю, я получаю сообщение об ошибке «ссылка не существует».
Спасибо.
Ответ №1:
Пожалуйста, измените следующим образом и протестируйте его снова.
Модифицированный скрипт:
function callCandles(pair, start, end) {
var response = UrlFetchApp.fetch("https://api-pub.bitfinex.com/v2/candles/trade:1D:" pair "/hist?limit=1000amp;start=" start "amp;end=" end "amp;sort=-1"); // Modified
var fact = JSON.parse(response.getContentText()); //parse the data from the API and store it in the variable data and convert response to text format//
return fact;
}
- Пожалуйста, используйте
pair
,start
иend
в качестве переменных. - Я думал, что причина вашего сообщения об ошибке связана с этим. А также, пожалуйста, измените следующим образом.
Измененная формула:
=callCandles("tBTCUSD","1577841154000","1606785154000")
- Пожалуйста, используйте
"tBTCUSD"
как строку, заключенную в"
.
Примечание:
- Например, когда
pair
используется как"pair"
,pair
это строковое значение. Этим, даже когда=callCandles("tBTCUSD","1577841154000","1606785154000")
используется,"tBTCUSD"
не используется и"pair"
используется. - Когда
=callCandles(tBTCUSD,"1577841154000","1606785154000")
используется, в данном случаеtBTCUSD
используется как именованный диапазон. При этом, когда нет именованного диапазонаtBTCUSD
,#NAME?
возвращается. Таким образом,pair
offunction callCandles(pair, start, end) {
is#NAME?
. Пожалуйста, будьте осторожны с этим.
Комментарии:
1. Это сработало! Я изменил pair, start и end на переменные и изменил формулу, чтобы иметь tBTC в кавычках makrs и удалил кавычки из start и end в формуле. Большое спасибо.
Ответ №2:
Не могли бы вы уточнить, в какой строке возникает ошибка?
Возможно, проблема в том, что переменная, которую вы передаете функции, на самом деле не используется:
var response = UrlFetchApp.fetch("https://api-pub.bitfinex.com/v2/candles/trade:1D:" "pair" "/hist?limit=1000amp;start=" "start" "amp;end=" "end" "amp;sort=-1");
Пара параметров, начало и конец должны быть добавлены без кавычек. Вы также должны использовать более новый синтаксис для некоторого более чистого кода:
var response = UrlFetchApp.fetch(`https://api-pub.bitfinex.com/v2/candles/trade:1D:${pair}/hist?limit=1000amp;start=${start}amp;end=${end} amp;sort=-1`);
И, как указал @tanaike, используйте tBTCUSD
кавычки, подобные этому "tBTCUSD"
Комментарии:
1. Теперь это работает. Я изменил pair, start и end на переменные и изменил формулу, чтобы иметь tBTC в кавычках makrs и удалил кавычки из start и end в формуле. Большое спасибо