【Day 15】Google Apps Script - API 篇 - Document Service - 文件服务范例-新增内容

来练习帮 Google 文件增加一点内容吧。


今日要点:
》Document Service 文件服务范例
》新增标题与表格建立


Document Service 内容新增

前一天我们简单介绍了 Document Service 的手册与 Google 文件内容的对应,今天继续来一些 API 程序使用范例。我们系列主要是读取文件中表格的内容来做资料转换,但表格的内容主要是用人工去建立调整。不过未来也可许可以自动建立文件。

所以今天先来介绍与练习一下新增标题与表格建立的相关 API,来用 Apps Script 来建立一下我们前面说明的铁人赛 Demo 表,我试着把程序码弄的很简单,把一些参数先写死比较好说明。

程序码与执行结果对照如下图:

如果跟要原本的文件比较,会发现有一点点不一样,目前 Apps Script 要合并栏位可以用 merge() 但他没有 colspan 的效果,所以今天产生的表格范例先没有处理合并栏位。是可以用其他方法来达成合并栏位的效果,但有点复杂就先不介绍了,可以查看一下下方参考的连结。

为了方便我们就不建一个新的文件档,读取原有的档案,如果想建立新档案再加入内容,只要把 DocumentApp.openById 的地方改用 create 就好了。

我们程序大概分几个部份

  • 读取文件档并清空内容
  • 加上标题
  • 加上3行空白
  • 加上表格及内容
  • 设定表格栏位内容的样式

程序码

程序码如下,里面用到的自定 function 我放在下方的程序附录里,可以参考看看:

function createDemoApiDocs_SetNewContent() {

  //读取文件档并清空内容
  var doc = DocumentApp.openById('1LqMPLrOFN14Tn5fc0N942Lt4PJqlgnp2pK-rUSHEzTk');  
  var body = doc.getBody();
  body.clear();

  //加上标题
  appendTitle(body, "铁人赛 API 文件 Demo");

  //加上3行空白
  appendEmptyline(body,3);

  //加上表格及内容
  table = appendTable(body);

  //设定表格栏位内容的样式
  setTableCellStyle(table);

}

以上就是建立 Google 文件内容,新增标题与表格建立的范例,今天就先这样罗。/images/emoticon/emoticon06.gif

参考


程序附录

加上标题

function appendTitle(body, text){
  var title = body.getParagraphs()[0];
  title.insertText(0,text);
  title.setHeading(DocumentApp.ParagraphHeading.TITLE);
  title.setAlignment(DocumentApp.HorizontalAlignment.CENTER);
} 

加上3行空白

function appendEmptyline(body, lines){

  for (var i=0; i<lines; i++){
    var emptyline = body.appendParagraph("");
    emptyline.setHeading(DocumentApp.ParagraphHeading.NORMAL);
    emptyline.setAlignment(DocumentApp.HorizontalAlignment.LEFT);
  }
} 

加上表格及内容

我们表格内容先固定内容。

function appendTable(body){

  table = body.appendTable([
    ["Docs Demo","getGmailInfo","查询Gmail资讯"],
    ["说明"," 使用 Google Apps Script 查询 Gmail 资讯。",""],
    [" Request Url Params ","",""],["键值","型别","说明"],
    [" name"," String","查询人的姓名"],
    [" func (必填)"," String","要呼叫的功能名称"],
    [" Response Body","",""],["键值","型别","说明"],
    [" hello"," String","对查询人的问候语"],
    [" unreadCount"," Number","收件夹中未读信件的数量"],
    [" spamCount"," Number","垃圾信件夹中的未读数量"],
    [" messageSubject"," ArrayObject","最新5笔信件的标题"],
    [" Sample","",""],
    ["Method","GET",""],
    ["URL","https://script.google.com/...",""],
    ["Request","?name=Jason&func=getGmailInfo",""],
    ["Response","{...}",""]
  ]);

  return table;
} 

设定表格栏位内容的样式

我们表格内容先固定内容,所以先简单一点直接设定 index 的值。

function setTableCellStyle(table){

 // 设定第一栏红字的部份
 for(var i= 0; i<17; i++){
    if(i==1 || i>12){
      table.getRow(i).getCell(0).setBackgroundColor('#F3F3F3');
    }
    if(i==4 || i==5 ||  (i>7 && i<12)){
      table.getRow(i).getCell(0).editAsText()
        .setForegroundColor("#980000")
    }
  }

  // 栏位标题的背景色
  for(var i= 0; i<3; i++){
    table.getRow(3).getCell(i).setBackgroundColor('#DDDDDD');
    table.getRow(7).getCell(i).setBackgroundColor('#DDDDDD');
  }

  // 段落标题的背景色
  for(var i= 0; i<3; i++){
    table.getRow(0).getCell(i).setBackgroundColor('#BBB9B9').setBold(true);
    table.getRow(2).getCell(i).setBackgroundColor('#BBB9B9').setBold(true);
    table.getRow(6).getCell(i).setBackgroundColor('#BBB9B9').setBold(true);
    table.getRow(12).getCell(i).setBackgroundColor('#BBB9B9').setBold(true);
  }

}

<<:  Day 17 AWS云端实作起手式第七弹 让开机器变得很自动自发Auto Scaling-ReadNode设置

>>:  30天学会C语言: Day 14-全部包轨!

Day-19 This

this 可说是 JavaScript中最复杂的概念,它是一个内部物件,代表函式(function)...

TypeScript | Type 研究心得纪录 1

我习惯理解一个东西,可以套用日常的生活经验,找出类比、拟人化会帮助我更好理解,今天的议题是最近看到 ...

[想试试看JavaScript ] 函式运算式

函式 函式运算式 Function expression 函式运算式中文也叫函式表达式 上一篇了解到...

Day-24 : 开发时,使用到tailwindCSS,今天来讲安装

yarn add -D tailwindcss@latest postcss@latest auto...

部署 Google App Script 专案(2) & Line Bot 简单回应讯息

昨天我们让 Reply Message 成功从 Read Mail 读取到验证码,今天要进一步让 R...