首页 > 解决方案 > 您可以使用 Google Apps 脚本查找和替换公式中的 URL 吗?

问题描述

我正在为教师创建一个汇总表,以提取所有学生的数据。每列是一个不同的学生,并且该学生的文件具有不同的 URL。我有 50 多名教师和 850 多名学生。我试图找到一种使用谷歌应用程序脚本来查找和替换列中的 URL 的方法。到目前为止,我有这段代码,我可以在日志中看到“baseLink”和“replaceLink”,但我不知道该怎么做才能让它们被替换。我附上了我正在使用的电子表格的快照,以防有助于更好地解释我的问题。您可以看到我使用 importrange 公式来提取 URL,而这些是需要更改的。我确实需要通读所有的专栏,但我很高兴能先学习如何做一个专栏。谢谢你的帮助! 在此处输入图像描述

在此处输入图像描述

这是我拥有的代码,其中有一行需要帮助的伪代码:

function UpdateColumnLinks() {
  var ss = SpreadsheetApp.getActiveSheet();
  var range = ss.getRange('G1:G76');
  var baseLink = ss.getRange('R2').getValue(); //This is the URL of a spreadsheet I want to replace that is in the formula
  var replaceLink = ss.getRange('S10').getValue();  //This is the URL of a spreadsheet I want to see in the formula

  Logger.log(baseLink)
  Logger.log(replaceLink)

  for i = 0; i<range.length; i++ {

  pseudo code:  find baseLink in range and replace with replaceLink

  }
}

标签: google-apps-scriptgoogle-sheets

解决方案


替换电子表格中的链接

富文本链接:

function UpdateColumnLinks() {
  var sh=SpreadsheetApp.getActiveSheet();
  var rg=sh.getRange(1,3,sh.getLastRow(),1);
  var dvs=rg.getRichTextValues();
  var rl=sh.getRange(1,1).getRichTextValue().getLinkUrl();replacement link
  var ls=SpreadsheetApp.newRichTextValue().setText(rl).build();
  for(var i=0;i<dvs.length;i++) {
    var link=dvs[i][0]=ls;
  }
  rg.setRichTextValues(dvs);
}

富文本值生成器

类 RichTextValue

公式链接:

function UpdateColumnLinks1() {
  const sh=SpreadsheetApp.getActiveSheet();
  const rl=sh.getRange(1,1).getFormula();
  const rg=sh.getRange(1,3,sh.getLastRow(),1);
  var vs=rg.getFormulas();
  vs.forEach(function(r,i){
    r[0]=rl;
  });
  rg.setFormulas(vs);
}

您的具体情况:

function UpdateColumnLinks() {
  var ss=SpreadsheetApp.getActiveSheet();
  var rg=ss.getRange('G1:G76);
  var fA=rg.getFormulas();
  var rl=ss.getRange('S10').getFormula();
  fA.forEach(function(r){r[0]=rl;});
  rg.setFormulas(fA);
}

推荐阅读