【问题标题】:Insert the link into the keyword in the sheet file将链接插入到工作表文件中的关键字中
【发布时间】:2021-09-24 04:28:23
【问题描述】:

请帮帮我:

我有一个包含 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-apps-script google-sheets google-docs


    【解决方案1】:

    我相信你的目标如下。

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

    参考资料:

    【讨论】:

    • 又惹你生气了。搜索时如何使其不区分大小写?
    • @Hạnh Khánh 关于你的新问题,在这种情况下,我认为这个答案会很有用。 stackoverflow.com/a/54217083/7108653
    • 感谢您的回复。我之前也发现了这篇文章并尝试了很多方法但没有奏效。幸运的是,你回答了,我再次尝试使用代码 var s = rgtxtselink.findText('(?i)'+a);,它成功了
    • @Hạnh Khánh 感谢您的回复。很高兴您的新问题也得到了解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多