当前位置: 首页 > 知识库问答 >
问题:

基于谷歌表单中单元格内容的动态超链接?

况经纬
2023-03-14

谷歌电子表格中有一个项目列表,我们需要链接谷歌硬盘上另一个文件夹中的一组文件。链接的功能如下所示:

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);
}

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

共有1个答案

秦焱
2023-03-14

创建指向链接的文件名对象:

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

使用循环来填充对象:

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);
  };
}; 
 类似资料:
  • 对编码完全陌生,我一直在自学。我对自己迄今为止所取得的成就感到非常高兴,现在我想拓展我的学习领域! 所以我组织青少年足球比赛。球队通过谷歌表格进入比赛。表格进入谷歌表格,然后我使用公式确保我可以看到每个年龄组有多少队参赛。每个年龄组在锦标赛中可以拥有最多数量的球队。指向活动窗体的链接是https://forms.gle/8VoBddM8AAJMFXqM7 我想做的事 目前,当一个年龄组接近满员时,

  • 我有用自定义单元格(继承自)填充的用户界面视图,每个单元格都包含一个,该视图根据其内容自动调整大小。事情是这样的,如何根据内容(可变视图)更改 单元格的高度。 该解决方案必须是动态的,因为用于填充< code>UIWebViews的HTML是从不断变化的提要中解析的。 我觉得我需要使用委托方法 中更改单元格的高度吗? 任何帮助都是伟大的。谢谢 两年多前我问过这个问题。通过介绍自动布局,可以找到iO

  • 我正试图让一个Google表单根据1个表单输入的数据,用多行填充电子表格,如下所示: 表单简单,客户信息最少https://docs.google.com/forms/d/1LrKlVuI7kxVU0lxz70Uu-2Obj4x3qIwe6nS-ErzbCAg/ 输入后,我需要表格在表格(或格式化表格)中输入数据,如下所示:-输入的每个部分(1、2或3)应位于单独的行中,具有相同的客户名称 然后,

  • 我有一个电子表格,记录了几个月的旧账户。有没有办法让Google Sheets在每个月的1号自动更新一个单元格? VG:一个账户有78个月的历史,在9月1日它就有79个月了。我想在本月1日自动更新它,这样我就不必在每个帐户年龄单元中手动添加1。

  • 我有一个GoogleSheets电子表格,我在其中记录每月的任务,所以每张表格代表一个月。我总是移动当月的工作表,使其在电子表格中位于第一位。我希望能够向同事发送一个超链接,该超链接始终链接到第一张/最左边的工作表上的单元格或行,无论是哪张工作表。 例如,如果我有一个标记为“Customer 3”的单元格,那么我希望超链接转到电子表格中第一张/最左侧工作表上的“Customer 3”单元格,而不管

  • 本文向大家介绍JavaScript动态改变表格单元格内容的方法,包括了JavaScript动态改变表格单元格内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript动态改变表格单元格内容的方法。分享给大家供大家参考。具体如下: JavaScript动态改变表格单元格的内容,下面的代码通过修改单元格的innerHTML来修改单元格内容 希望本文所述对大家的javascr