Скрипт Google Apps — удаление частей текста в Google Таблицах

#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() для получения значений.

Ссылка