Я пытаюсь использовать Airtable API для извлечения записей из моих данных, в частности, списка URL-адресов, которые у меня есть в ячейках столбцов.
Я написал функцию get_airtable_records
для выполнения вызова API через curl
, и она работает - возвращая результаты в виде объекта Json. В частности, я помещаю URL-адреса в массив, $article_urls
.
Единственная проблема в том, что Airtable ограничивает возврат результатов «страницами» максимум 100 записей, а мои данные содержат больше этого. API принимает параметры maxRecords
и pageSize
, но более важный, pageSize
, по-прежнему ограничен 100.
Airtable также возвращает другое значение Json, offset
, которое используется в таких случаях для нумерации страниц. offset
- это идентификатор записи, предназначенный для использования в качестве входного параметра (также называемый offset
). Вы можете использовать его для обозначения начальной записи в последующем дополнительном вызове API. Я понимаю это .
Чего я не понимаю, так это как изменить мой код, чтобы учесть возможность повторного опроса Airtable.
Другими словами, мы всегда должны делать стартовый запуск с нуля, когда нет значения offset
.
Затем, если в возвращаемых результатах присутствует значение offset
, мы должны снова обойти - пока значение offset
не появится.
Вот что у меня есть.
<code> // Make get request, store result in array
$articles = get_airtable_records($offset); // $offset won't exist at the start
// Prepare Article URLs list as an array
if (!isset($article_urls)) {
$article_urls = array();
}
// For each URL found in Airtable
foreach($articles['records'] as $record){
$url = $record['fields']['Published URL'];
// Add to our array list
if (!empty($url)) {
array_push($article_urls, $url);
}
}
// URL list after first pass:
echo '<pre>';
print_r($article_urls);
echo '
';
// Может достигнуть максимума 100
// echo 'Offset:'. $ статьи [ 'смещение'];
// Может существовать значение типа "itrJYSLx0RfslI80f / recEu6TiPTPCSDxg5".
// Если это так, вернитесь к началу, снова выполните get_airtable_records ($ offset) и array_push
// До тех пор, пока еще раз нет значения "смещение" в конце
Я предполагаю, что какой-то цикл while
будет полезен ...?
Пара вещей верна ...
- При первом вызове исходное значение
offset
не нужно передавать, поскольку оно начинается с записи 0.
- Но этот и последующие проходы могут генерировать значение
offset
, которое следует использовать для следующего прохода.
- Вызов final не будет генерировать значение
offset
, так как он вернет последнюю страницу исчерпанных результатов, и нет необходимости начинать заново.