#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
Итак, у меня есть список значений в электронной таблице Google.
Color Red
Color Blue
Color Green
как обычный текст. Можно ли отредактировать все эти ячейки, чтобы удалить скрипт "Color "
via Google Apps?
Комментарии:
1. Да, это так, но это также можно сделать с помощью формулы. Требуется ли вам, чтобы это было сделано с помощью скрипта?
Ответ №1:
Я думаю, что решение по формуле было бы проще:
=SUBSTITUTE(A1,"Color ","")
Но если вы хотите перезаписать значения новыми, то, я думаю, сценарий Google Apps — единственный выход:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(`Sheet1`);
const values = sh.getRange(`A1:A${sh.getLastRow()}`).getValues().flat();
const new_values = values.map(v=>[v.replace(`Color `,``)]);
sh.getRange(1,1,new_values.length,1).setValues(new_values);
}
Не забудьте изменить название листа. В моем случае это Sheet1
так, а также настройте диапазон в соответствии с вашими потребностями. В моем примере я начинаю со столбца A и первой ячейки до последней строки с содержимым, а затем перезаписываю тот же самый столбец.
Ответ №2:
Вы также можете использовать это как альтернативу уже предоставленному решению:
function myColor() {
let spreadsheet = SpreadsheetApp.getActive();
let sheet = spreadsheet.getActiveSheet();
let vals = sheet.getRange("ROW", "COLUMN", "NO_OF_ROWS", 1).getValues()
let regEx = new RegExp(/^[^s] /);
for (let i = 0; i < vals.length; i )
if (regEx.exec(vals[i][0])[0] === "Color")
sheet.getRange(i 1, 1).setValue(vals[i][0].split(' ').slice(1));
}
Приведенное выше решение использует регулярные выражения для проверки, является ли первое слово каждой ячейки «Color», и если условие выполняется, оно удаляет его, используя методы split
and slice
.
Для извлечения значений getRange()
был использован метод для получения диапазона, за которым следует метод getValues()
для получения значений.