来练习帮 Google 文件增加一点内容吧。
今日要点:
》Document Service 文件服务范例
》新增标题与表格建立
前一天我们简单介绍了 Document Service 的手册与 Google 文件内容的对应,今天继续来一些 API 程序使用范例。我们系列主要是读取文件中表格的内容来做资料转换,但表格的内容主要是用人工去建立调整。不过未来也可许可以自动建立文件。
所以今天先来介绍与练习一下新增标题与表格建立的相关 API,来用 Apps Script 来建立一下我们前面说明的铁人赛 Demo 表,我试着把程序码弄的很简单,把一些参数先写死比较好说明。
程序码与执行结果对照如下图:
如果跟要原本的文件比较,会发现有一点点不一样,目前 Apps Script 要合并栏位可以用 merge() 但他没有 colspan 的效果,所以今天产生的表格范例先没有处理合并栏位。是可以用其他方法来达成合并栏位的效果,但有点复杂就先不介绍了,可以查看一下下方参考的连结。
为了方便我们就不建一个新的文件档,读取原有的档案,如果想建立新档案再加入内容,只要把 DocumentApp.openById 的地方改用 create 就好了。
我们程序大概分几个部份
程序码如下,里面用到的自定 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 文件内容,新增标题与表格建立的范例,今天就先这样罗。
function appendTitle(body, text){
var title = body.getParagraphs()[0];
title.insertText(0,text);
title.setHeading(DocumentApp.ParagraphHeading.TITLE);
title.setAlignment(DocumentApp.HorizontalAlignment.CENTER);
}
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设置
this 可说是 JavaScript中最复杂的概念,它是一个内部物件,代表函式(function)...
我习惯理解一个东西,可以套用日常的生活经验,找出类比、拟人化会帮助我更好理解,今天的议题是最近看到 ...
函式 函式运算式 Function expression 函式运算式中文也叫函式表达式 上一篇了解到...
yarn add -D tailwindcss@latest postcss@latest auto...
昨天我们让 Reply Message 成功从 Read Mail 读取到验证码,今天要进一步让 R...