表单提交时;通过组合域和用户输入(slug)将输入值转换为超链接,输入值作为显示名称

问题描述 投票:0回答:1

感谢您的阅读。我是一个需求简单的新手,希望实现操作自动化并使工作流程更加高效,但我发现所有相关的帖子和文档都很困难。我正在寻求帮助,因为我现在只是在兜圈子,并且不再记得给我带来最接近结果的脚本。学校男孩的错误...

我有一个 Google 表单,要求用户上传图像,然后输入 What3Words 位置作为几个不同问题的答案。

我已经在 Google Sheets 表单响应电子表格中设置了一个 OnFromSubmit 脚本,以将单个单元格中图像的多个 Google Drive URL 位置转换为超链接,但我还想将输入的 W3W 位置转换为超链接,然后可以将其转换为超链接。被点击。

我有一个结合了域和用户输入(slug)的脚本,但 URL 比我希望在电子表格上显示的长度长,所以我希望获取用户输入,例如“daring.lion.race”,将其转换为超链接“https://what3words.com/daring.lion.race”,但保留原始输入作为显示文本“daring.lion.race”。

我已经使用 RichTextValueBuilder 尝试了以下变体,但我很挣扎。任何帮助将不胜感激。

function onEdit(e) {
W3WURL1(e);
W3WURL2(e);
}

function W3WURL1(e) {
var range = e.range;
var responseArray = e.values;
var W3Wprefix = "https://what3words.com/";

    responseArray[4] = W3Wprefix + e.values[4]; 
    range.setValues([responseArray]);
}

function W3WURL2(e) {
var range = e.range;
var responseArray = e.values;
var W3Wprefix = "https://what3words.com/";

    responseArray[7] = W3Wprefix + e.values[7]; 
    range.setValues([responseArray]);
}

我觉得我与下面的内容是正确的,但我被困住了。

function onEdit(e) {
 var cell = e.range.getCell(1,5);
 var text = cell.getValue();
 const domain = "https://what3words.com/";
 var url = domain + (text);
 var richTextValueBuilder= SpreadsheetApp.newRichTextValue()
 richTextValueBuilder.setText(text);
  {
   richTextValueBuilder.setLinkUrl(url)
 }
 cell.setRichTextValue(richTextValueBuilder.build());
}

田池的答案 OnFormSubmit 触发器与在同一电子表格上运行的不同脚本相关。由于我对编写脚本的了解有限,我已将脚本分成不同的文件,尽管我认为它们可以以某种方式组合成一个脚本。

onEdit 和 W3W 函数是我在同一个电子表格上运行新进程而不影响正常运行的脚本的尝试。我使用了 onEdit,因为这是我找到并用作编写这些脚本的基础的在线示例 - 也许我也应该使用 OnFormSubmit?然而,由于它适用于上面提到的我原来的 W3W 脚本,所以我继续使用它。

再次,由于我缺乏知识,因为我需要脚本来转换 2 列中的值,所以我创建了 W3W1 和 W3W2 来针对不同的列。

我想要的输出的一个例子:

表单输入值

E 上校 — daring.lion.race

H 上校 — Pretty.needed.chill

脚本运行后的单元格值

E 校 — daring.lion.race

H 号 — 漂亮.需要.寒冷

如果我误解了,请道歉,但我希望能回答您的问题并更好地解释我想要做什么。

google-sheets hyperlink richtext
1个回答
0
投票

使用 onFormSubmit 函数,列出多个要按顺序运行的函数,下面的脚本完成了我想要的功能。


    function W3WURL1(e) { //where W3WURL1 is the custom function name
     var cell = e.range.getCell(1,5); //where column 5 contains the URL text value I want to retain
     var text = cell.getValue();
     const domain = "https://what3words.com/"; //the domain I want to use as a prefix to the input value in column 5 to create the URL
     var url = domain + text; //combining the domain and input value to create the URL
     var richTextValueBuilder= SpreadsheetApp.newRichTextValue()
     .setText(text)
     .setLinkUrl(url)
     cell.setRichTextValue(richTextValueBuilder.build());
    }
© www.soinside.com 2019 - 2024. All rights reserved.