如何在Google Apps Script中移除文档中的缩写形式?
问题与解决方案
问题描述
我大致了解操作原理,仅需实际移除步骤的帮助。我使用kontractions库来实现,通过以下代码片段导入该库:
eval(UrlFetchApp.fetch("<SCRIPT>").getContentText()) const LIBRARIES = {<SCRIPT REFERENCE>: "<SCRIPT>", <ANOTHER SCRIPT REFERENCE>: "<ANOTHER SCRIPT>"} Object.keys(LIBRARIES).forEach(function(library) { newFunc = eval(UrlFetchApp.fetch(LIBRARIES[library]).getContentText()); eval('var ' + library + ' = ' + newFunc); });
但该库还依赖其他导入项,我无法全部添加。请问有没有无需完全重写的解决方法?
可行解决方案
- 打包成单文件:用Webpack、Rollup这类打包工具,把kontractions库和它的所有依赖打包成一个独立的JS文件。之后只需要把这个打包好的文件放到可访问的地址,用你现有的
UrlFetchApp.fetch拉取这一个文件就行,不用再处理零散的依赖。 - 手动合并依赖代码:如果依赖数量不多,直接查看kontractions源码里用到的依赖模块,把对应代码复制出来和原库代码合并成一个文件,这样导入时只需要处理这一个合并后的文件,避开多依赖的问题。
- 改用轻量无依赖实现:自己写个简单的缩写替换逻辑,不用依赖外部库。比如:
这种方式代码量小,完全独立,不用管任何外部依赖。// 定义缩写映射表,可根据需求补充 const contractionMap = { "don't": "do not", "can't": "cannot", "I'm": "I am", "you're": "you are", "it's": "it is" }; function expandContractions(text) { // 匹配常见缩写格式,替换为完整形式 return text.replace(/\b([a-zA-Z]+'[a-zA-Z]+)\b/g, match => { const lowerMatch = match.toLowerCase(); return contractionMap[lowerMatch] || match; }); }
内容的提问来源于stack exchange,提问作者skii
相关产品推荐
相关产品推荐

