如何通过分页从附加页面中提取数据

2024-04-26

我成功返回了第一页数据,并获得了 API 调用中存在的附加数据页数。

这是我尝试提取附加数据页的代码。

try {
const response = UrlFetchApp.fetch(root + endpoint, params);
const responseCode = response.getResponseCode();
const returnedResults = response.getContentText();
const jsonResults = JSON.parse(returnedResults)
//console.log(responseCode) // *** return 200
//console.log(returnedResults) // *** return successful
//console.log(jsonResults) //*** return successful


Object.keys(jsonResults).forEach(function (key){
  console.log(jsonResults[key]);
  /*
  { count_per_page: 20,
    total_count: 12261,
    current_page: 1,
    total_pages: 614,
    _links: { next: { href: '/v2/organizations?page=2' } } }
  */

  });
} catch (e) {
  console.log('Error: ' + e);
  }

const data = [];

let hasmoreitems = true;
  while (hasmoreitems) {
    
    hasmoreitems = jsonResults.pagination.current_page < jsonResults.pagination.total_pages;
   
  data.forEach(entry => {
    const name = entry['name'];
    const email = entry['email'];
    const mission = entry['mission_statement'];
    const address = entry['address'].country;

  data.push([
    name, email, mission, address]);
  });

  // send data to spreadsheet
  const sheet = SpreadsheetApp.openById('1fM-soJt8rJeIHYZ2vVKyoX9J-LohElqvGB2syhlRk00').getSheets()[1];

  sheet.getRange(sheet.getLastRow()+1, 1, data.length,data[0].length).setValues(data);
  }

分页的示例响应如下所示;

"pagination": {
        "count_per_page": 20,
        "total_count": 1,
        "current_page": 1,
        "total_pages": 2,
        "_links": {
            "next": {
                "href": "/v2/organizations?page=2"
            }
        }
    }

在检查了对象的结构之后,我意识到了键的不同级别。下面是工作代码。希望有帮助。

let all_data = [];

  while (endpoint) {
    let response = UrlFetchApp.fetch(root + endpoint, params);
    let data = JSON.parse(response.getContentText());
    let orgs = data.organizations

    Object.keys(data).forEach(function (key) {
      console.log(data[key]);
    });

    endpoint = data.pagination._links.next.href;
    orgs.forEach((entry) => {
      all_data.push([
        entry.name,
        entry.email,
        entry.mission_statement,
        entry.address.country,
      ]);
      //console.log(all_data)
    });
       
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过分页从附加页面中提取数据 的相关文章

随机推荐

  • Android CameraX 不显示任何内容

    我已经实现了一个新示例 这里是a link https codelabs developers google com codelabs camerax getting started 0它描述了来自 Google Codelabs 的新 C
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • maven的依赖冲突

    如果我有一些库在不同版本中具有其他依赖项 例如以下示例 commons logging 1 0 4 jar 因与 1 1 1 冲突而省略 和 commons logging 1 1 1 jar 对此的最佳实践是什么 通知在相关依赖项中排除此
  • 按名称获取形状 ID

    有什么办法可以得到一个形状Id如果你知道它是Name 例如 如果我有这个 Dim myshape As Shape myshape Name 我可以得到它吗Id myshape Id getIdByName myshape Name 当然
  • Android Studio v 1.1 / 1.2 中的渲染问题

    当我添加android support v7 widget Toolbar或其他android support v7 widget 存在渲染问题 But 支持库已是最新 我正确地编译了依赖项 我可以将它们导入MainActivity jav
  • 我可以为第二个侧边栏使用多个

    我可以使用多个吗
  • 安装Python时出错

    击中后 make install 我收到以下错误 usr bin install cannot create regular file usr local bin python2 6 Permission denied make altbi
  • 如何更改每个 Gradle 构建类型的应用程序名称

    我正在尝试找出一种方法来更改 gradle 中每个构建类型的应用程序的应用程序名称 例如 我希望调试版本具有
  • Winforms RichTextBox 中的两列

    在 C 中 我需要能够在单个 RichTextBox 中至少给出 2 列的印象 出于我的目的 它可能看起来像这样 1 1 2 70 8 5 565 1000000 300000 700000 76 10 66 对于左栏中的每个 问题 都会有
  • Aurelia 中的多个触发器

    我想在 aurelia 中触发两种不同的方法 实现此目的的最佳方法是什么 a 我可能会做以下事情 HTML a JavaScript yourFunction event parts this toggleSize size parts t
  • 在触发器上传递 JSON 数据

    我正在调用返回 JSON 数据的服务 Script ajax type POST url some service dataType json success function response if response status ok
  • MongoDB 推文数据库的日期范围查询失败

    我正在尝试对 mongo 数据库中的推文集合执行范围查询 由于某种原因 以下查询将起作用 db posts find created at gte Fri Nov 25 00 00 00 0000 2011 lt Fri Nov 25 23
  • 从节点子进程检索值

    var fp ffprobe fileName show streams grep var width exec fp width function err stdout stderr return stdout alert stdout
  • NgbDropdown autoClose“外部”不起作用

    我正在使用 Angular4 和 ng bootstrap 我想在下拉菜单外部单击时关闭下拉菜单 文档的其余部分 查看文档后我发现autoClose 类型 boolean 外面 里面 但是当我尝试将其设置为参数 config autoClo
  • 是否可以在浏览器中使用 javascript 对用户系统进行基准测试

    随着 Html5 开始普及 我们看到更多关于视频或画布元素等的实验 当使用画布进行实验时 例如用粒子制作烟花 1000 个粒子可能在现代机器上运行良好 但在 3 年机器上可能会运行得很慢 无论如何 是否可以对用户系统进行基准测试以动态更改画
  • 当摘要具有嵌入文本输入并且用户按空格键时,如何防止 html 详细信息元素切换

    我在处于打开状态的详细信息元素的摘要标签内有一个文本输入 目的是捕获用户输入 该输入最终将显示为详细信息元素 见下文 但是 当用户在输入文本时按空格键时 详细信息元素会切换 我想阻止这种情况 我预计这可以在按键事件中使用 stopPropa
  • xgboost中的eval_metric和feval有什么区别?

    有什么区别feval and eval metric在xgb train中 这两个参数仅用于评估目的 Kaggle 的帖子提供了一些见解 https www kaggle com c prudential life insurance as
  • Java、类路径、类加载 => 同一 jar/项目的多个版本

    我知道对于经验丰富的程序员来说这可能是一个愚蠢的问题 但我有一个库 一个 http 客户端 我的项目中使用的一些其他框架 jar 需要它 但它们都需要不同的主要版本 例如 httpclient v1 jar gt Required by c
  • 迭代器后继者

    我想用另一个迭代器 同类 的后继者初始化一个迭代器 任意类型 以下代码适用于随机访问迭代器 但不适用于前向或双向迭代器 Iterator i j 1 一个简单的解决方法是 Iterator i j i 但这不起作用初始化语句for 循环的
  • 如何通过分页从附加页面中提取数据

    我成功返回了第一页数据 并获得了 API 调用中存在的附加数据页数 这是我尝试提取附加数据页的代码 try const response UrlFetchApp fetch root endpoint params const respon