【Day 24】Google Apps Script - API Blueprint 篇 - Google Docs 转换 API Blueprint 格式(2)

继续介绍昨天主流程里的副程序吧。


今日要点:
》Google Docs 转换 API Blueprint 格式之二


Google Docs 转换 API Blueprint 格式之二

昨天我们把主程序介绍完了,今天继续来介绍相关的副程序:

  • 处理表格每一列的内容
  • 处理基本资料的 table 内容
  • 处理 Action 区块

程序码

程序码如下:

处理表格每一列的内容

在文件中,前面几列是 API 的基本资料,如说明、API 名称等。

  • 前面第1列,最重要的是 API 的名称,我们需要先取出 API 的名称来当成我们群组的名称。
  • 在其他的列,最重要的是找出每个描述段落的起始位置。
///////////////////////////////////////////////////////
//处理表格每一列的内容
///////////////////////////////////////////////////////
function parseRowData(row, array){
  switch (row) {
    case 0:  
      var title = array[row][2];                  
      title = title.replace(/\(/g, "(").replace(/\)/g, ")");    
      gApibConent = gApibConent + NL + 
                    "## "+ title + " [" + REPLACE_URL + "]" + NL;   
      break;

    default:
      //找寻区块的开始列
      for ( var index = 0; index < gSegmentTitle.length; ++index ) {
        if(array[row][0].indexOf(gSegmentTitle[index])>-1) { 
          gSegmentIndex[index] = row;
        }
      }
  }
}

 


处理基本资料的 table 内容

在文件中,前面几列是 API 的基本资料,如说明、API 名称等。
因为他的格式跟其他的段落不太一样,所以需要独立一个副程序来处理。

///////////////////////////////////////////////////////
//处理基本资料的 table 内容
///////////////////////////////////////////////////////
function makeHeaderTable(arr){
  var str = "";
  str = str + 
        "<table>" + NL ;
        
  var len = arr.length;
  for ( var row = 0; row < arr.length; ++row ) {
    var thtd = "th"; //标题的栏位用 th, 前端呈现会是蓝色
    
    str = str + 
        "    <tr>" + NL ;
    if(row==1){
      str = str + 

        "        <td>" + arr[row][0] + "</td>"  + NL + 
        "        <td colspan=2>" + arr[row][1] + "</td>" + NL;
    }else{
    
      if(row>0){thtd = "td"}

      for ( var cell = 0; cell < 3; ++cell ) {
          str = str +
          "    <"+ thtd +">" + 
                 arr[row][cell].replace(/ /g, " ").replace(/\n/g, "<br>") + 
               "</"+ thtd +">" + NL ;
      }
    }

    str = str + 
        "    </tr>" + NL;
  }
  
  str = str + "</table>" + NL;
  Logger.log("makeHeaderTable(arr) = \n" + str); // debug
  return str; 

}

Logger.log 的执行结果:

 


 

 

处理 Action 区块

最後我们组合 Action 区块,这里要从 API 文件各段落中,取出 Action 区块中所需要的变数。主要是:

  • Action 区块的名称
  • Parameters 参数
  • Response
///////////////////////////////////////////////////////
//处理 Action 区块
///////////////////////////////////////////////////////
function makeActions(arr){
  var func = arr[0][1]; 
  var title = arr[0][2]; 
  var method = arr[(gSegmentIndex[2]+1)][1];
  
  var str = "";
  str = str + NL + "### try:" + title + " [" + method + "]" + NL + NL ;

  str = str + "+ Parameters" + NL;
  str = str + "  + name: Jason (string, optional) -查询人的姓名" + NL;
  str = str + "  + func: "+ func + " (string, required) - 要呼叫的功能名称" + NL;
  str = str + NL ;
  str = str + "+ Response 200 (application/json)" + NL ;
  str = str + NL ;

  Logger.log("makeActions(arr) = " + str); // debug

  return str; 
}

Logger.log 的执行结果:


 

汇出到 apib 档

最後我们在云端硬碟中指定一个建好的资料夹,在这个资料夹中建立一个新的档案,把组合好的内容,存放进去。

///////////////////////////////////////////////////////
//汇出到 apib 档
///////////////////////////////////////////////////////

function createGoogleDriveTextFile(content) {
  
  var dir = DriveApp.getFolderById("1qihF3An6UJykI8TEii...");  
  fileName = "铁人赛-API-文件-Demo-程序自动产生-" + VER + "-" + getTimestemp() + ".apib";
  var file = dir.createFile(fileName, content);
};

 
以上就是 Google Docs 转换 API Blueprint 格式的全部转换程序码了。有些地方还可以写的更弹性,後续有时间的话再进行修正优化,让这专案的程序可以适应更多的表格型式。
 

参考


<<:  应用程序快速更新还原,让服务持续运作不中断,公司财源滚滚,老板开心,大家开心

>>:  [Day25]程序菜鸟自学C++资料结构演算法 – 快速排序法(Quick Sort)

How to Reset forgotten root password in RHEL/CentOS 7/8

As a Linux Administrator, You must know the import...

[Day7]C# 鸡础观念- 你有选择障碍吗? 交给 if陈述式 解决吧!

在生活中,我们常常面临选择, 今天午餐吃什麽好呢?饭还是面呢? 明天要去哪里玩?山上还是海边呢? 那...

[访谈] APCS x 武陵科学班 Jayinnn

今天邀请到旺宏科学奖的旺宏奖得主及以学测 APCS 组入学交大的 Jayinnn 来分享~ 访谈连结...

[第26天]理财达人Mx. Ada-OBV指标

前言 本文说明使用TA-Lib函式库计算OBV指标。 OBV指标 OBV能量潮指标(On Balan...

[Day 03] if条件、缩排规则、函式写法,以及一些字串技巧

[ 30 Days of ML Challenge | D03] 今天提供一个文件以及一个练习教材,...