ссылка не существует с пользовательской функцией — google script

#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 of function 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 в формуле. Большое спасибо