Скрипты Google объединяют ячейки в разных столбцах

#google-apps-script #google-sheets #google-sheets-formula

#google-apps-script #google-sheets #google-sheets-формула

Вопрос:

У меня есть следующий сценарий, в котором я хочу объединить ячейки в разных столбцах, но количество столбцов отличается от случая к случаю.

пример1: в ячейке A2 находится значение 70286 amp;, а в ячейке B2 — значение playmobil . Конечный результат в F2 должен быть 70286 playmobil

пример2: в ячейке A4 есть значение 70666, в ячейке B4 есть значение lego, а в ячейке C4 есть значение ninjago. Конечный результат в F2 должен быть 70666 lego ninjago

пример

Ответ №1:

Решения:

Формула Google Sheet:

Вы можете использовать TEXTJOIN, и если вы хотите знак плюс перед строкой, вы можете использовать CONCAT, чтобы добавить его.

Используйте эту формулу в столбце F:

 =CONCAT(" ",textjoin("  ", 1, A2:E2))
  

пример

Если вы не знаете, сколько столбцов вы хотите использовать, вы можете выбрать полную строку:

 =CONCAT(" ",textjoin("  ", 1, A2:2))
  

Скрипт Google Apps:

  • Мы получаем данные второй строки в виде 2D-массива с помощью getValues() .
  • Затем мы применяем flat(), чтобы преобразовать его в 1D.
  • Следующий шаг — удалить пустые ячейки с помощью filter() .
  • Наконец, мы используем reduce(), чтобы получить конечную строку как сумму всех строк.

Логику можно легко настроить. Вы можете выполнить эту логику для нескольких ячеек и т. Д.

Фрагмент кода:

 function myFunction() {
  const sh = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  const row = 2;
  const data=sh.getRange(row,1,1,sh.getMaxColumns()).
                   getValues().
                   flat().
                   filter(c=>c!='').
                   reduce( (a, b) => `${a}  ${b}`);      
  const result = ` ${data}`;
  sh.getRange('F1').setValue(result);
  Logger.log(result);
}
  

Комментарии:

1. Спасибо за ваш ответ. К сожалению, я хочу это как код для редактора сценариев. Также в вашем примере вы используете A2: E2, но в моем полном листе я не всегда знаю, сколько столбцов мне нужно объединить

2. Если вы не знаете, сколько у вас столбцов, просто удалите E . Поэтому используйте это: =CONCAT(" ",textjoin(" ", 1, A2:2)) . @GeorgeChalikiopoulos

3. @GeorgeChalikiopoulos Если вам нужно скриптовое решение, тогда вам нужно быть более конкретным. Куда именно вам нужно поместить выходные данные? каков диапазон входных данных? Вам нужен предопределенный или динамический ввод? Но я не вижу никакой пользы в использовании скрипта Google для чего-то, что быстро достигается с помощью простой формулы.

4. @GeorgeChalikiopoulos Я добавил фрагмент кода на javascript (GAS), если вы хотите взглянуть.