Как заменить пользовательский ввод на пользовательский ввод URL, сделав его гиперссылкой с помощью скриптов Google Apps / Google Sheets?

#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 ).

[Вопрос] Есть ли способ выполнить следующие шаги ТОЛЬКО при вводе идентификатора? Если нет, я хочу, чтобы ячейка была пустой.

  1. Пользователь устанавливает идентификатор в ячейку (пример: 12345).
  2. Скрипт Google Apps каким-то образом копирует идентификатор, а затем заменяет его фиксированным отображаемым текстом с идентификатором (пример: перейдите по ссылке для 12345).
  3. Сценарий Google Apps каким-то образом использует фиксированный URL (example.com /) и идентификатор (пример: 12345), и объединяет их (пример: example.com/12345 ).
  4. Пользователь не увидит весь 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 триггер.

Иллюстрация:

введите описание изображения здесь