google-apps-script - 从工作表标签和一个模板制作变量
问题描述
function createDocs() {
var headers = Sheets.Spreadsheets.Values.get('1wjmfG-mTYFw_JQZIondppy-VxffdV3fFzcEi8Og', 'Juli 2021!A5:K5');
var tactics = Sheets.Spreadsheets.Values.get('1wjmfG-mTYFw_JQZIondppy-VoCguU_VgVfdsdcEi8Og', 'Juli 2021!H6:K4000');
var templateId = '1B2IzVd03MmoPtT7Tcvce8I9wXGrb6fYXCnz8JikAs';
for(var i = 0; i < tactics.values.length; i++){
var textId = tactics.values[i][0];
var titel = tactics.values[i][1];
var words = tactics.values[i][3];
//Make a copy of the template file
var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
//Rename the copied file
DriveApp.getFileById(documentId).setName('NEW ' + textId +' '+ titel + ' ' + words);
//Get the document body as a variable
var body = DocumentApp.openById(documentId).getBody();
//Insert the textid name
body.replaceText('##textID##', textId)
//Insert the titel name
body.replaceText('##subject##', titel)
//Insert the words name
body.replaceText('##words##', words)
//Append tactics
parseTactics(headers.values[0], tactics.values[i], body);
}
}
function parseTactics(headers, tactics, body){
for(var i = 1; i < tactics.length; i++){
{tactics[i] != '' &&
body.appendListItem(headers[i] + ' | ' + tactics[i] + ' net').setGlyphType(DocumentApp.GlyphType.BULLET);
}
}
}
所以我有这段代码可以在特定选项卡上正常工作并基于模板创建文档。
我怎样才能做到这一点,以便我的代码适用于所有选项卡?
所有感兴趣的选项卡都具有以下格式:“月年”。有一些不感兴趣的选项卡具有不同的格式。所有选项卡都有自己的相应文件夹。
目标是只有一个模板文件,我可以复制需要创建文档的每个文件夹。
解决方案
如果您的工作表/标签是这样的:November 2021
然后你可以使用这样的东西从你的其他工作表中过滤它们:
function selectSheets() {
const mA = [...Array.from(new Array(12).keys(), x => Utilities.formatDate(new Date(2021, x), Session.getScriptTimeZone(), "MMMM"))];
const ss = SpreadsheetApp.getActive();
let shts = ss.getSheets().filter(sh => {
let t = sh.getName().split(' ');
if (~mA.indexOf(t[0]) && t[1].match(/\d{4}/)) {
return true;
} else {
return false;
}
}).map(sh => sh.getName());
Logger.log(shts.join(','))
}
推荐阅读
- node.js - 当包 X 作为依赖项安装时会运行什么 npm 脚本,但当我在包 X 上运行 npm install 时不会运行?
- matlab - 将数组处理为函数参数
- r - 如何从所有图中有选择地打印图
- spring - Spring Boot + 多数据源问题 + 生产集群环境
- python-imaging-library - 使用 mss 调整屏幕截图的大小,以便使用 pytesseract 更好地阅读
- r - R rtweet:如果给定 Twitter 句柄没有返回结果,则 search_tweets 循环不会继续
- ios - 在刷新之前,第一个 Firebase 查询项出现问题
- sql - 如何用相同 PolicyNumber 的非空值替换空字符串
- javascript - AngularJS单击时突出显示锚标记
- html - Bootstrap 4:高度相等的 div,中间有颜色填充和装订线