google-apps-script - 将链接插入到工作表文件中的关键字中
问题描述
请帮我:
我有一个包含 2 列的工作表文件 A 列是关键字,B 列是插入关键字的链接。例如:
Column A Column B
Key1 Link1
Key2 Link2
... ...
如何在DOCS文件中自动查找关键字然后插入Link?这是我的想法,但它不起作用
function insertLink() {
var file,files,folder,folders,newestFileID;
var filethaythe = DriveApp.getFilesByName('Set Link');
var ss = SpreadsheetApp.open(filethaythe.next());//ID sheet thư viện thay thế
SpreadsheetApp.setActiveSpreadsheet(ss);
SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Trang tính1');
var sheet = ss.getSheetByName('Trang tính1');
var values = sheet.getDataRange().getValues();
folders = DriveApp.getFoldersByName('test3');
while (folders.hasNext()) {
folder = folders.next();
files = folder.getFilesByType("application/vnd.google-apps.document");
while (files.hasNext()){
file = files.next();
var newestFileID = file.getId();
Utilities.sleep(500);
var currentDoc = DocumentApp.openById(newestFileID);
var dongcuoi= sh.getLastRow();
var dc = dongcuoi +1;
var rgtxt = currentDoc.getBody();
var rgrep = ss.getSheets()[0].getRange("A1:B"+dc);
var repA = rgrep.getValues().filter(r => r.every(c => c.toString()));
repA.forEach(e => rgtxt.setLinkUrl(...e));
currentDoc.saveAndClose();
break
}
};
}
解决方案
我相信你的目标如下。
- 您想将超链接设置为 Google 文档上的单词。
- 单词和超链接是从 Google 电子表格中检索的。
在这种情况下,如何进行以下修改?
修改后的脚本:
function insertLink() {
// 1. Retrieve values from Spreadsheet.
var file,files,folder,folders,newestFileID;
var filethaythe = DriveApp.getFilesByName('Set Link');
var ss = SpreadsheetApp.open(filethaythe.next());
var sheet = ss.getSheetByName('Trang tính1');
var values = sheet.getDataRange().getValues();
// 2. Retrieve Google Document.
folders = DriveApp.getFoldersByName('test3');
while (folders.hasNext()) {
folder = folders.next();
files = folder.getFilesByType("application/vnd.google-apps.document");
while (files.hasNext()) {
file = files.next();
var newestFileID = file.getId();
// 3. Search words and set hyperlinks on Google Document.
var currentDoc = DocumentApp.openById(newestFileID);
var rgtxt = currentDoc.getBody();
values.forEach(([a, b]) => {
var s = rgtxt.findText(a);
while (s) {
var start = s.getStartOffset();
s.getElement().asText().setLinkUrl(start, start + a.length - 1, b);
s = rgtxt.findText(a, s);
}
});
currentDoc.saveAndClose();
break
}
}
}
- 为了搜索单词,使用的方法
findText
。并且,setLinkUrl
设置超链接到搜索词的方法。
参考:
推荐阅读
- javascript - 如何为 scss 样式文件添加前缀?
- python - Seaborn:在箱线图顶部叠加散点图
- javascript - 将数据表条件格式设置为特定列中的特定值
- elasticsearch - 具有范围内可用值的 Elasticsearch 嵌套查询
- r - 使用 gsub 和多个条件清理字符串
- r - 将 **RPubs** `html` 文件转换回 `Rmd`
- javascript - 可能影响 Edge 86、Dojo、ArcGIS Javascript 4.xx 的错误
- javascript - 数组 - 检查数组元素之一中是否存在值的最佳方法是什么(React / JS)
- python - 当我点击提交按钮时,如何让 matplotlib 饼图显示在 GUI 中?
- sparql - 使用文字或字符串作为 SPARQL 谓词