Я пытаюсь получить данные с помощью Google App Script из веб-службы через API в формате json и записать их в свою электронную таблицу Google, но получаю сообщение об ошибке: «Количество строк в диапазоне должно быть не менее 1. (строка 22)"
Я получил скрипт из поиска Google, который я написал в редакторе скриптов листов Google и дал все разрешения. Может кто-нибудь, пожалуйста, скажите мне, как пройти мимо ошибки?
Спасибо
// Taken from here --> https://gist.github.com/varun-raj/5350595a730a62ca1954
function pullJSON() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheet = ss.getActiveSheet();
var url="https://cricapi.com/api/fantasySummary?apikey=apikey"; // Paste your JSON URL here
var response = UrlFetchApp.fetch(url); // get feed
var dataAll = JSON.parse(response.getContentText()); //
var dataSet = dataAll;
var rows = [],
data;
for (i = 0; i < dataSet.length; i++) {
data = dataSet[i];
rows.push([data.data, data.team, data.players, data.name]); //your JSON entities here
}
dataRange = sheet.getRange(1, 1, rows.length, 4); // 4 Denotes total number of entites
dataRange.setValues(rows);
}
Ниже приведено значение ответа
{"dateTimeGMT":"2019-05-14T12:00:00.000Z","data":{"fielding":[{"title":"Fielding for Pakistan Innings","scores":[{"name":"CR Woakes","runout":0,"stumped":0,"bowled":2,"lbw":0,"catch":1,"pid":"247235"},{"name":"Chris Jordan","runout":0,"stumped":0,"bowled":0,"lbw":0,"catch":1,"pid":288992},{"name":"JJ Roy","runout":0,"stumped":0,"bowled":0,"lbw":0,"catch":1,"pid":"298438"},{"name":"JE Root","runout":0,"stumped":0,"bowled":0,"lbw":0,"catch":1,"pid":"303669"},{"name":"DJ Willey","runout":0,"stumped":0,"bowled":1,"lbw":0,"catch":1,"pid":"308251"},{"name":"TK Curran","runout":1,"stumped":0,"bowled":1,"lbw":1,"catch":0,"pid":"550235"}]},{"title":"Fielding for England Innings","scores":[{"name":"Asif Ali","runout":0,"stumped":0,"bowled":0,"lbw":0,"catch":1,"pid":"494230"},{"name":"Junaid Khan","runout":0,"stumped":0,"bowled":1,"lbw":0,"catch":0,"pid":"259551"},{"name":"Babar Azam","runout":0,"stumped":0,"bowled":0,"lbw":0,"catch":1,"pid":"348144"},{"name":"Shaheen Shah Afridi","runout":1,"stumped":0,"bowled":0,"lbw":0,"catch":0,"pid":"1072470"}]}],"bowling":[{"scores":[{"6s":1,"4s":9,"0s":28,"Econ":"6.70","W":"4","R":"67","M":"0","O":"10","bowler":"CR Woakes","pid":"247235"},{"6s":3,"4s":10,"0s":26,"Econ":"8.60","W":"1","R":"86","M":"0","O":"10","bowler":"DJ Willey","pid":"308251"},{"6s":1,"4s":1,"0s":14,"Econ":"5.33","W":"0","R":"32","M":"0","O":"6","bowler":"MM Ali","pid":"8917"},{"6s":0,"4s":5,"0s":20,"Econ":"6.11","W":"1","R":"55","M":"0","O":"9","bowler":"LE Plunkett","pid":"19264"},{"6s":2,"4s":7,"0s":21,"Econ":"7.40","W":"2","R":"74","M":"0","O":"10","bowler":"TK Curran","pid":"550235"},{"6s":0,"4s":3,"0s":3,"Econ":"8.50","W":"0","R":"34","M":"0","O":"4","bowler":"BA Stokes","pid":"311158"},{"6s":0,"4s":1,"0s":1,"Econ":"9.00","W":"0","R":"9","M":"0","O":"1","bowler":"JL Denly","pid":"12454"}],"title":"Bowling To Pakistan Innings"},{"scores":[{"6s":3,"4s":5,"0s":24,"Econ":"7.12","W":"1","R":"57","M":"0","O":"8","bowler":"Junaid Khan","pid":"259551"},{"6s":3,"4s":11,"0s":25,"Econ":"8.30","W":"0","R":"83","M":"0","O":"10","bowler":"Shaheen Shah Afridi","pid":"1072470"},{"6s":0,"4s":8,"0s":20,"Econ":"6.87","W":"0","R":"55","M":"0","O":"8","bowler":"Hasan Ali","pid":"681305"},{"6s":4,"4s":2,"0s":15,"Econ":"8.28","W":"1","R":"58","M":"0","O":"7","bowler":"Imad Wasim","pid":"227758"},{"6s":4,"4s":7,"0s":28,"Econ":"8.33","W":"1","R":"75","M":"0","O":"9","bowler":"Faheem Ashraf","pid":"681117"},{"6s":2,"4s":0,"0s":3,"Econ":"9.50","W":"0","R":"19","M":"0","O":"2","bowler":"Haris Sohail","pid":"318788"},{"6s":0,"4s":1,"0s":0,"Econ":"10.80","W":"0","R":"9","M":"0","O":"0.5","bowler":"Asif Ali","pid":"494230"}],"title":"Bowling To England Innings"}],"batting":[{"scores":[{"dismissal-by":{"name":"TK Curran","pid":"550235"},"dismissal":"bowled","SR":115,"6s":1,"4s":16,"B":131,"R":151,"dismissal-info":" b Curran","batsman":"Imam-ul-Haq","pid":"568276"},{"dismissal-by":{"name":"JE Root","pid":"303669"},"dismissal":"catch","SR":50,"6s":0,"4s":0,"B":4,"R":2,"dismissal-info":"c Root b Woakes","batsman":"Fakhar Zaman","pid":"512191"},{"dismissal-by":{"name":"CR Woakes","pid":"247235"},"dismissal":"bowled","SR":136,"6s":0,"4s":3,"B":11,"R":15,"dismissal-info":" b Woakes","batsman":"Babar Azam","pid":"348144"},{"dismissal-by":[{"name":"TK Curran","pid":"550235"}],"dismissal":"runout","SR":100,"6s":0,"4s":7,"B":41,"R":41,"dismissal-info":"run out (Curran)","batsman":"Haris Sohail","pid":"318788"},{"dismissal-by":{"name":"Chris Jordan","pid":288992},"dismissal":"catch","SR":79,"6s":0,"4s":2,"B":34,"R":27,"dismissal-info":"c sub (CJ Jordan) b Plunkett","batsman":"Sarfaraz Ahmed (c) ","pid":"227760"},{"dismissal-by":{"name":"JJ Roy","pid":"298438"},"dismissal":"catch","SR":120,"6s":3,"4s":2,"B":43,"R":52,"dismissal-info":"c Roy b Woakes","batsman":"Asif Ali","pid":"494230"},{"dismissal-by":{"name":"CR Woakes","pid":"247235"},"dismissal":"catch & bowled","SR":183,"6s":0,"4s":4,"B":12,"R":22,"dismissal-info":"c & b Woakes","batsman":"Imad Wasim","pid":"227758"},{"dismissal-by":{"name":"TK Curran","pid":"550235"},"dismissal":"lbw","SR":118,"6s":0,"4s":1,"B":11,"R":13,"dismissal-info":"lbw b Curran","batsman":"Faheem Ashraf","pid":"681117"},{"dismissal":"not out","SR":200,"6s":2,"4s":1,"B":9,"R":18,"dismissal-info":"not out","batsman":"Hasan Ali","pid":"681305"},{"dismissal-by":{"name":"DJ Willey","pid":"308251"},"dismissal":"catch & bowled","SR":175,"6s":1,"4s":0,"B":4,"R":7,"dismissal-info":"c & b Willey","batsman":"Shaheen Shah Afridi","pid":"1072470"},{"dismissal":"not out","SR":0,"6s":0,"4s":0,"B":0,"R":0,"dismissal-info":"not out","batsman":"Junaid Khan","pid":"259551"},{"SR":"","6s":"","4s":"","B":"","R":"","dismissal-info":"","detail":"10 (lb 1, w 9)","batsman":"Extras","pid":0}],"title":"Pakistan Innings"},{"scores":[{"dismissal-by":{"name":"Asif Ali","pid":"494230"},"dismissal":"catch","SR":138,"6s":4,"4s":8,"B":55,"R":76,"dismissal-info":"c Asif Ali b Faheem Ashraf","batsman":"JJ Roy","pid":"298438"},{"dismissal-by":{"name":"Junaid Khan","pid":"259551"},"dismissal":"bowled","SR":137,"6s":5,"4s":15,"B":93,"R":128,"dismissal-info":" b Junaid Khan","batsman":"JM Bairstow ","pid":"297433"},{"dismissal-by":{"name":"Babar Azam","pid":"348144"},"dismissal":"catch","SR":119,"6s":1,"4s":4,"B":36,"R":43,"dismissal-info":"c Babar Azam b Imad Wasim","batsman":"JE Root","pid":"303669"},{"dismissal-by":[{"name":"Shaheen Shah Afridi","pid":"1072470"}],"dismissal":"runout","SR":97,"6s":2,"4s":2,"B":38,"R":37,"dismissal-info":"run out (Shaheen Shah Afridi)","batsman":"BA Stokes","pid":"311158"},{"dismissal":"not out","SR":127,"6s":3,"4s":4,"B":36,"R":46,"dismissal-info":"not out","batsman":"MM Ali","pid":"8917"},{"dismissal":"not out","SR":141,"6s":1,"4s":1,"B":12,"R":17,"dismissal-info":"not out","batsman":"EJG Morgan (c)","pid":"24598"},{"SR":"","6s":"","4s":"","B":"","R":"","dismissal-info":"","detail":"12 (lb 3, nb 1, w 8)","batsman":"Extras","pid":0}],"title":"England Innings"}],"team":[{"players":[{"name":"JJ Roy","pid":"298438"},{"name":"JM Bairstow","pid":"297433"},{"name":"JE Root","pid":"303669"},{"name":"BA Stokes","pid":"311158"},{"name":"MM Ali","pid":"8917"},{"name":"EJG Morgan","pid":"24598"},{"name":"JL Denly","pid":"12454"},{"name":"TK Curran","pid":"550235"},{"name":"CR Woakes","pid":"247235"},{"name":"DJ Willey","pid":"308251"},{"name":"LE Plunkett","pid":"19264"}],"name":"England"},{"players":[{"name":"Imam-ul-Haq","pid":"568276"},{"name":"Fakhar Zaman","pid":"512191"},{"name":"Babar Azam","pid":"348144"},{"name":"Haris Sohail","pid":"318788"},{"name":"Sarfaraz Ahmed","pid":"227760"},{"name":"Asif Ali","pid":"494230"},{"name":"Imad Wasim","pid":"227758"},{"name":"Faheem Ashraf","pid":"681117"},{"name":"Hasan Ali","pid":"681305"},{"name":"Shaheen Shah Afridi","pid":"1072470"},{"name":"Junaid Khan","pid":"259551"}],"name":"Pakistan"}],"man-of-the-match":{"name":"JM Bairstow","pid":"297433"},"toss_winner_team":"England","winner_team":"England","matchStarted":true},"type":"ODI","cache3":true,"creditsLeft":202,"v":"1","ttl":6,"provider":{"source":"Various","url":"https://cricapi.com/","pubDate":"2019-05-23T07:15:07.670Z"}}
Вывод, который я ищу, таков:
Если я укажу данные-> команда-> игроки-> имя, он должен вывести это (только имя)
Если я предоставлю данные-> команда-> Игроки, он должен вывести это (имя + код)
Точно так же, если я укажу любую другую группу, она должна вывести соответствующие значения.
Обновлено значение ответа в вопросе. Спасибо за внимание. Так же обновил апикей в вопросе.
Спасибо за добавление информации. Если добавленная стоимость равна response.getContentText()
, dataSet.length
становится undefined
. При этом rows
становится []
. Я думаю, что причина вашей ошибки в этом. Хотя я думал, что пытался изменить ваш скрипт, к сожалению, из вашего вопроса я не смог понять, какой результат вы хотите. Поэтому я разместил это как комментарий. Прошу прощения за мое плохое знание английского.
Спасибо за быстрый ответ. Я не знаю, работаете ли вы со скриптами приложений Google и таблицами Google. Мне нужен вывод в электронных таблицах Google на активном листе в табличном формате, где все значения идут под соответствующими заголовками. 'rows.push([data.data, data.team, data.players, data.name])' должен вывести список игроков один под другим, а также к какой команде они принадлежат. Надеюсь, я правильно объясняю свой вопрос.
Спасибо за ответ. Я должен извиниться за мое плохое знание английского еще раз. Если data
вашего ответа равно dataSet[i]
, цикл for не работает. Так что я не могу понять насчёт rows.push([data.data, data.team, data.players, data.name])
. Можете ли вы предоставить образец вывода, который вы хотите? Даже если вы не можете этого сделать, не волнуйтесь. Причина, по которой я не мог понять ваш вывод, связана с моим плохим знанием английского языка. Другие пользователи смогут понять об этом.
Спасибо еще раз. Я обновил желаемый результат в вопросе. Надеюсь, я получу какое-то решение о том, как получить желаемый результат.
Спасибо за ответ. К сожалению, я не мог понять о ваших дополнительных изображениях. Я не хочу больше вас беспокоить. Поэтому, когда я смог понять вашу цель, я хотел бы подумать о вашем решении. Я глубоко извиняюсь за мое плохое знание английского языка.
Я искренне ценю ваше время, чтобы помочь мне с моей проблемой. Большое спасибо. Бог благословил ! Жду решения моей проблемы.
Спасибо за ответ. Я думаю, что значения ваших двух изображений могут быть получены с помощью сценария. Но я пока не могу понять насчёт Similarly if I supply any other group, it should output the respective values.
. Прошу прощения за эту ситуацию. Так могу я спросить тебя об этом?
Я признателен, если вы можете помочь мне, как получить значения по сценарию. Под другой группой я подразумеваю другие данные, доступные в выводе json. Например. данные-> поле или данные-> ватин или данные-> боулинг. Надеюсь, я объяснил, о чем вы просите. Даже если вы поможете мне получить значения изображений, которые я загрузил, я попытаюсь получить другие значения самостоятельно, разобравшись с вашим скриптом. Спасибо
Спасибо за ответ. 1. Насчет data->fielding or data->batting or data->bowling
кажется, что это предметы. Могу ли я спросить вас о выходе, который вы хотите? 2. Если вы хотите получить разные значения, вводя разные параметры, структуры fielding
, batting
и bowling
одинаковы. Но структура team
отличается от других. Об этом, как вы хотите сделать? 3. Есть ли другие ключи, которые вам нужны, кроме fielding
, batting
, bowling
и team
?
1. результат, который мне нужен, аналогичен изображениям, которые я разместил. Данные в табличном формате на основе параметров. 2. Да, я понимаю, что структуры разные, и снова я бы сказал то же самое, что данные должны поступать в таблицы на основе структуры. 3. Я хочу охватить все данные. Для лучшего понимания посетите https://json-csv.com/
и вставьте туда вывод json. Затем вы сгенерируете вывод. Я хочу аналогичный вывод в гугл листах без перехода на сайт https://json-csv.com/
.
Спасибо за ответ. К сожалению, я пока не могу понять вашу цель. Но когда я нашел видение цели, я хотел бы подумать о вашем решении. Прошу прощения, что не смогу опубликовать ответ в ближайшее время.
Моя проблема решена. Я использовал код отсюда, и это сработало https://github.com/bradjasper/ImportJSON/blob/master/ImportJSON.gs
Спасибо за предоставленную информацию. Я рад, что ваша проблема была решена.
Эта ошибка не связана со скриптом приложения. Это ваша проблема с листом Google, вам нужно заморозить заголовок листа. Шаги: 1) Выберите строку заголовка 2) Перейдите в меню листа «Просмотр»> «Заморозить»> «1 строка». проверьте скриншот
Для получения более подробной информации см. следующий снимок экрана:
Можете ли вы указать значение
response
?