Спасибо за прочтение. Я новичок с простыми потребностями и хочу автоматизировать действия и сделать рабочие процессы более эффективными, но все соответствующие публикации и документация мне кажутся сложными. Мне нужна помощь, пожалуйста, так как сейчас я просто хожу по кругу и больше не могу вспомнить сценарий, который дал мне наиболее близкий результат. Ошибка школьника...
У меня есть форма 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
. Но я хотел бы попытаться это понять. Когда я смогу это правильно понять, мне хотелось бы подумать о решении. Я был бы признателен, если бы вы простили мое плохое знание английского языка.
Насколько я понимаю, отношения в том виде, в каком они сейчас настроены, заключаются в том, что отправка формы является частью сценария, который здесь не показан, но выполняется в той же электронной таблице при отправке сообщения from. Затем запускается сценарий onEdit для выполнения функций W3W1 и W3W2. Я хочу заменить функцию W3W лучшим сценарием, который позволит отображать исходный ввод в качестве отображаемого имени гиперссылки.
Используя функцию 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());
}
Я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять ваш вопрос. Могу ли я спросить вас о связи между триггером
OnFromSubmit
, функцией 2onEdit
и функциямиW3WURL1
иW3WURL2
? И, чтобы правильно понять ваш вопрос, можете ли вы предоставить примеры ожидаемых ситуаций ввода и вывода? Во-первых, мне хотелось бы правильно понять Ваш вопрос.