#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))
. @GeorgeChalikiopoulos3. @GeorgeChalikiopoulos Если вам нужно скриптовое решение, тогда вам нужно быть более конкретным. Куда именно вам нужно поместить выходные данные? каков диапазон входных данных? Вам нужен предопределенный или динамический ввод? Но я не вижу никакой пользы в использовании скрипта Google для чего-то, что быстро достигается с помощью простой формулы.
4. @GeorgeChalikiopoulos Я добавил фрагмент кода на javascript (GAS), если вы хотите взглянуть.