【问题标题】:Dynamic Hyperlink based on cell contents in google sheets?基于谷歌表格中单元格内容的动态超链接?
【发布时间】:2016-02-16 21:31:55
【问题描述】:

谷歌电子表格中有一个项目列表,我们需要链接来自谷歌驱动器上另一个文件夹的一堆文件。链接的构造函数如下所示:

function bscott () {

  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var s=ss.getActiveSheet();
  var c=s.getActiveCell();
  var fldr=DriveApp.getFolderById("**FOLDER ID - not included for security**");
  var files=fldr.getFiles();
  var names=[],f,str;

  while (files.hasNext()) {
    f=files.next();
    str='=hyperlink("' + f.getUrl() + '","' + f.getName() + '")';
    names.push([str]);
  }

  s.getRange(c.getRow(),c.getColumn(),names.length).setFormulas(names);
}

我们遇到的问题是,如果文件夹的内容与列表的顺序不完全匹配,文件到行项目的顺序就会不同步。如果同一行中另一个单元格的内容与文件名中的内容匹配,我们希望某些文件超链接到工作表中的某些单元格。我们希望避免为每个订单项手动创建链接。这可能在谷歌表格中吗?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    创建一个文件名到链接的对象:

    var objNamesToLinks = {};//Create an empty object to be populated with data
    

    使用 while 循环填充对象:

    var fileName = "";//declare variable outside of the loop.
    
    while (files.hasNext()) {
      f=files.next();
      fileName = f.getName();
      str='=hyperlink("' + f.getUrl() + '","' + fileName + '")';
      names.push([str]);
    
      objNamesToLinks[fileName] = str;//The object key is the file name
    };
    

    对象的结果将是:

    objNamesToLinks = {
      'fileName1':'Link1',
      'fileName2':'Link2',
      'fileName3':'Link3'
    };
    

    然后用文件名获取电子表格中的数据列:

    var columnWithFileNames = s.getRange(start Row, column with names, s.getLastRow())
        .getValues();
    

    然后循环遍历列中的数据数组并匹配文件名。如果匹配,请查找正确的链接,并将其放入单元格中。

    var thisFileName, thisMatchedLink;
    
    for (var i=0;i<columnWithFileNames.length;i+=1) {
      thisFileName = columnWithFileNames[i][0].trim();
      thisMatchedLink = objNamesToLinks[thisFileName];
    
      if (thisMatchedLink !== undefined) {
        s.getRange(i,columnToPutLinkInto).setValue(thisMatchedLink);
      };
    }; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多