将 link 插入 sheet 文件中的关键字

Insert the link into the keyword in the sheet file

请帮助我:

我有一个包含 2 列的 sheet 文件 A列是关键字,B列是link要插入的关键字。例如:

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的方法将超链接设置为搜索到的词。

参考文献: