Я пытаюсь передать массив значений методу сокращения URL-адресов и получить сокращенную форму URL-адреса, но проблема в том, что, хотя я получаю вывод, исключение бросание в блок catch (исключение: недопустимое значение). Я не знаю, почему это происходит. может кто-то, пожалуйста, поправьте меня, где я ошибаюсь, и это правильный способ сделать это? Мой код:
var lng = sheet.getRange(2, 1, sheet.getLastRow()).getValues(); try { for(var i in lng) { var url = UrlShortener.Url.insert({ longUrl: lng[i]}); Logger.log(url.id); } } catch(e) { Logger.log(e); }
Передача значения массива методу сокращения URL-адресов при вызове исключения
0
A
ответ
0
, как вы имеете в виду lng[i]
неправильно. Вы принимаете первое значение в одномерном массиве lng[i]
как lng[i][0]
.
Внесены некоторые изменения в код. Попробуйте это
function shorturl()
{
var sheet = SpreadsheetApp.getActiveSheet();
var lng = sheet.getRange(2, 1, sheet.getLastRow()).getValues();
try
{
for(var i=0;i<lng.length; i++)
{
if(lng[i][0])
{
var url = UrlShortener.Url.insert({ longUrl: lng[i][0]});
Logger.log(url.id);
}
}
}
catch(e)
{
Logger.log(e);
}
}
Надеюсь, что это поможет!
@kkr, его работа! Спасибо за помощь. Можете ли вы объяснить мне немного больше? – DinEsh
В основном диапазон возвращает объект, в котором данные хранятся в виде 2-мерного массива, такого как матрица. Для извлечения значений из диапазона нам нужно пройти через диапазон. В первом цикле мы получаем первые значения строки объекта диапазона, поэтому 'lng [i]' будет Единым размерным массивом, даже если в этой строке есть только одно значение. Поэтому для получения первого значения нам нужно получить к ним доступ как «lng [i] [0]». Надеюсь, это тебе все объясняет. – KRR
Спасибо за объяснение KKR. – DinEsh