【Day 16】Google Apps Script - API 篇 - Document Service - 文件服务范例-读取表格

来练习读取 Google 文件中的表格内容吧。


今日要点:
》Document Service 文件服务范例
》表格内容读取


Document Service 内容读取

前一天我们简单介绍了Google 文件新增标题与表格建立,今天继续来练习读取表格内容 API 程序使用。我们系列主要是读取文件中表格的内容来做资料格式转换,所以首先我们要先可以抓取到表格栏位的内容。

表格与抓取的内容对照如下图:

我们表格最大列数是17列(Row),最大栏数是3栏(Col),所以抓取出来的二维阵列就是 17x3 的阵列。如果有合并的栏位, 那就只有第一个有值,其他被合并的是没有值。

我们再实验一个小的表格让你看的更清楚,下图的表格里有合并3列3栏的格子,我们的来看看阵列的值。

可以看到,合并的格子,只有最左上角的格式有值,其他都是空值。

程序码

我们程序大概分几个部份

  • 取得所有的表格集合(tables)
  • 读取每一个表格(table)
  • 读取表格中的每一列(row)
  • 读取一列中的每一栏(col)
  • 把栏位值存到阵列 array[row][col] = celltext;

程序码如下:

function get(e){
  readDocById('1AvS30VgjUNSYwg_sEpOd...');  //铁人赛 API 文件 Demo
}

function readDocById(id) {

  var doc = DocumentApp.openById(id);  
  
  //取得所有的表格集合(tables)
  var tables = doc.getBody().getTables();

  //读取每一个表格(table)
  for (var tableIndex in tables)
  {
    var table = tables[tableIndex]; //取出第 n 个 table
    var rows = table.getNumRows();  //取得有几列

    //读取表格中的每一列(row)
    var array = [];
    for ( var rowIndex = 0; rowIndex < rows; ++rowIndex ) {
      var row = table.getRow(rowIndex)

      //读取一列中的每一栏(col)
      array[rowIndex] = [];
      for ( var colIndex=0; colIndex < row.getNumCells(); ++colIndex) {
        var celltext = row.getChild(colIndex).getText();

        array[rowIndex][colIndex] = celltext;
      }
    }

    Logger.log(JSON.stringify(array)); // debug

  }

}

以上就是表格内容读取的范例,可以抓取到表格栏位的内容後,之後就能依需要转成特定的格式了,今天就先这样罗。

参考



<<:  Day17 CSS位置position介绍

>>:  Day-17: 咩安抓部署?

GitHub Action 实作持续交付 - 部署至 Azure App Service

可以 ASP.NET Core 网站部署的环境相当多,包含 IIS, Nginx, App serv...

Day 26 : 案例分享(7.5) 库存与制造 - 物料需求计划及MES制造执行系统 (客制内容)

案例说明及适用场景 提供二个实务运用的客制案例 物料需求计划-透过销售订单生成制造订单後,载入预计投...

Day18 - GitLab CI 自动建置 Docker Image

前言 上回说到 CI/CD 的第一步会是 Build ,今天就来实际了解如何建置 Build Sta...

从零开始的8-bit迷宫探险【Level 7】Swift 基础语法 (五)

今日目标 认识 nil 认识 Optional 认识 if let 及 guard let nil ...

[从0到1] C#小乳牛 练成基础程序逻辑 Day 11 - Flow Chart ○♢▭ 五种流程图案 线上绘制工具

五种流程图案○♢▭ | 线上绘制工具 | draw.io 🐄点此填写今日份随堂测验 ...