В форме отправить; преобразовать входное значение в гиперссылку, объединив доменный и пользовательский ввод (слаг), используя входное значение в качестве отображаемого имени

Спасибо за прочтение. Я новичок с простыми потребностями и хочу автоматизировать действия и сделать рабочие процессы более эффективными, но все соответствующие публикации и документация мне кажутся сложными. Мне нужна помощь, пожалуйста, так как сейчас я просто хожу по кругу и больше не могу вспомнить сценарий, который дал мне наиболее близкий результат. Ошибка школьника...

У меня есть форма Google, в которую пользователи должны загружать изображения, а затем вводить местоположения What3Words в качестве ответа на несколько разных вопросов.

Я уже настроил сценарий OnFromSubmit в электронной таблице ответов формы Google Таблиц, чтобы преобразовать несколько URL-адресов Google Диска в одной ячейке для изображений в гиперссылки, но я также хотел бы преобразовать входные местоположения W3W в гиперссылки, которые затем можно будет использовать. нажал.

У меня есть сценарий, который объединяет домен и пользовательский ввод (слаг), но 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, упомянутого выше, я продолжал его использовать.

Опять же, из-за недостатка знаний, поскольку мне нужен сценарий для преобразования значений в двух столбцах, я создал W3W1 и W3W2 для разных столбцов.

Пример желаемого результата:

Входное значение формы

Col E — daring.lion.race

Col H — довольно.нужно.холодно

Значение ячейки после запуска скрипта

Col E — daring.lion.race

Col H — Pretty.needed.chill

Извиняюсь, если я неправильно понял, но я надеюсь, что это ответит на ваши вопросы и лучше объяснит, что я хочу сделать.

Я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять ваш вопрос. Могу ли я спросить вас о связи между триггером OnFromSubmit, функцией 2 onEdit и функциями W3WURL1 и W3WURL2? И, чтобы правильно понять ваш вопрос, можете ли вы предоставить примеры ожидаемых ситуаций ввода и вывода? Во-первых, мне хотелось бы правильно понять Ваш вопрос.

Tanaike 07.05.2024 03:57

Спасибо за ваш комментарий, Танаике, любая помощь будет оценена по достоинству.

Jon Harris 07.05.2024 10:43

Существует ограничение на количество символов, и теперь я не могу редактировать свой исходный комментарий, который я нажал «Отправить» слишком рано, поэтому я постараюсь добавить свой ответ на ваши вопросы внизу исходного сообщения.

Jon Harris 07.05.2024 10:50

Спасибо за ответ. Я должен еще раз извиниться за мое плохое знание английского. К сожалению, из вашего обновленного вопроса я все еще не мог понять связь между триггером OnFromSubmit, функцией 2 onEdit и функциями W3WURL1 и W3WURL2. Но я хотел бы попытаться это понять. Когда я смогу это правильно понять, мне хотелось бы подумать о решении. Я был бы признателен, если бы вы простили мое плохое знание английского языка.

Tanaike 07.05.2024 13:55

Насколько я понимаю, отношения в том виде, в каком они сейчас настроены, заключаются в том, что отправка формы является частью сценария, который здесь не показан, но выполняется в той же электронной таблице при отправке сообщения from. Затем запускается сценарий onEdit для выполнения функций W3W1 и W3W2. Я хочу заменить функцию W3W лучшим сценарием, который позволит отображать исходный ввод в качестве отображаемого имени гиперссылки.

Jon Harris 07.05.2024 18:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используя функцию onFormSubmit, перечисляющую несколько функций для запуска по порядку, приведенный ниже сценарий сделал то, что я хотел.

function onFormSubmit(e) {
    W3WURL1(e);
}

function W3WURL1(e) {
    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());
}

Другие вопросы по теме