#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-sheets
Вопрос:
[Цель] Я создал выделенный столбец в таблице из многих строк, чтобы пользователи могли вводить определенные идентификаторы в ячейку. Я хочу иметь возможность комбинировать эти идентификаторы с определенным фиксированным URL-адресом, что позволило бы нам перейти на конкретный сайт в зависимости от каждого идентификатора.
[Проблема] Я создал следующий код, который, как я понимаю, позволил бы use установить URL-адрес, однако он не объединяет URL-адрес с идентификаторами, предоставленными пользователем, поэтому он не позволяет мне заполнить URL-адрес. Другими словами, для завершения URL-адреса нам нужен фиксированный URL-адрес (пример: example.com ) и предоставленный пользователем идентификатор (пример: 12345) и сделать его интерактивным (пример: example.com/12345 ).
[Вопрос] Есть ли способ выполнить следующие шаги ТОЛЬКО при вводе идентификатора? Если нет, я хочу, чтобы ячейка была пустой.
- Пользователь устанавливает идентификатор в ячейку (пример: 12345).
- Скрипт Google Apps каким-то образом копирует идентификатор, а затем заменяет его фиксированным отображаемым текстом с идентификатором (пример: перейдите по ссылке для 12345).
- Сценарий Google Apps каким-то образом использует фиксированный URL (example.com /) и идентификатор (пример: 12345), и объединяет их (пример: example.com/12345 ).
- Пользователь не увидит весь URL-адрес, однако он увидит отображаемый текст (перейдите по ссылке для 12345), и если они нажмут на ссылку, она приведет их на страницу (example.com/12345 ), специфичный для идентификатора.
// Global veriables
var app = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Status");
function onEdit(e) {
var setLink = app.getRange("M16:M");
setLink.setValue('=HYPERLINK("https://example.com/","Go to link for ")');
}
Ответ №1:
Объяснение:
Ваша цель — заменить значение в диапазоне M16:M
гиперссылкой, содержащей это значение, при редактировании в этой ячейке.
- Во-первых, вам нужно воспользоваться объектом event.
- После редактирования ячейки в диапазоне
M16:M
следующий скрипт заменит это значение гиперссылкой, которая будет содержать предыдущее значение в качествеid
url
. - Если вы удалите значение в
M16:M
URL, оно будет автоматически удалено.
Решение:
function onEdit(e) {
const ss = e.source;
const as = ss.getActiveSheet();
const rng = e.range;
const row = rng.getRow();
const col = rng.getColumn();
if (as.getName()=='Status' amp;amp; col == 13 amp;amp; row > 15){
if (rng.getValue()!=''){
rng.setValue(`=HYPERLINK("https://example.com/${rng.getValue()}","Go to link for ${rng.getValue()}")`)
}
else{
rng.clearContent();
}
}
}
Будьте осторожны:
- Это
onEdit
триггер, который автоматически активируется при редактировании ячейки в диапазонеM16:M
листаStatus
. Вы не должны выполнять это вручную, это так не работает. Смотрите здесь, как работает простойonEdit
триггер.
Иллюстрация: