Я хотел бы выполнить функцию разделения для определенного диапазона. Например, если у меня есть строка типа «HYT008», мне нужно, чтобы в результате было только 008, что означает, что я хотел бы разделить последние 3 буквы из строки.
Вот сценарий -
В Google Sheet я буду выполнять это условие как =RIGHT(A2:A,3)
В сценарии Google Apps мне нужно выполнить действие.
Вот строковые методы JavaScript: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Мой лист застревает, пока я выполняю правильную формулу,
У меня есть 30k+ данных, которые нужно разделить следующим образом.
Вы пробовали =arrayformula(right(a2:a30000,3))
Я думаю, формула массива будет работать, но формулы тяжелее, чем печатные значения. Если ему не нужно постоянно обновлять значения, я также считаю, что сценарий имеет больше смысла. Кстати, я добавил решение arrayformula для встряски завершения @TheMaster
@Marios Жестко закодированные значения можно легко получить только путем копирования>вставки. На самом деле скрипт полезен только в том случае, если оператору нужно делать это неоднократно под триггерами или какой-то автоматизацией. Одноразовых легко достичь с помощью только формул.
Есть несколько способов сделать это в JavaScript.
Один из способов — использовать метод slice и получить последние 3 элемента вашей строки: string.slice(-3)
.
затем вы можете использовать карту, чтобы применить эту операцию к полному столбцу по вашему выбору:
sh.getRange('A2:A'+sh.getLastRow()).getValues().flat().map(v=>[v.slice(-3)]);
Следующий скрипт получит значения в столбце A, получит последние 3 элемента и вставит их в столбец B:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1'); // adjust this to the name of your sheet
const values = sh.getRange('A2:A'+sh.getLastRow()).getValues().flat().map(v=>[v.slice(-3)]);
sh.getRange(2,2,values.length,1).setValues(values); // paste them in column B
}
Лист, используемый для фрагмента кода:
Здесь вам не нужно определять последний элемент вашего столбца.
=arrayformula(if (len(A2:A),right(A2:A,3),""))
Результат:
@Moses Я также добавил формулу массива на случай, если вы сможете ее использовать, это может быть весьма полезно.
Полный ответ с хорошим объяснением. +1
какова очевидная выгода от того, что сценарий делает это, по сравнению с формулой?