Предполагая лист, такой как этот один, который имеет заголовок и шесть различных столбцов (где B - описание, а F - категория);Вы можете использовать словарь для перевода своих значений следующим образом:
// (description -> category) dictionary
var translations = {
"cooking": "Cooking",
"sports": "Sport",
"leisure": "Leisure",
"music": "Music",
"others": "Other"
}
function assignCategories() {
var dataRange = SpreadsheetApp.getActiveSheet().getDataRange();
for (var i=2; i<=dataRange.getNumRows(); i++) {
var description = dataRange.getCell(i, 2).getValue();
var category = translations[description];
dataRange.getCell(i, 6).setValue(category);
}
}
В случае, если вам нужно дополнительное постановление (т. е. описания, которые содержат крикет должен быть классифицирован как спорт), вы можете выполнить свойжелаемых результатов путем реализации собственной пользовательской функции и использования строковых функций (таких как indexOf ) или регулярных выражений .
Использование indexOf
// (description -> category) dictionary
var translations = {
"cooking": "Cooking",
"sports": "Sport",
"leisure": "Leisure",
"music": "Music",
"others": "Other"
}
function assignCategories() {
var dataRange = SpreadsheetApp.getActiveSheet().getDataRange();
for (var i=2; i<=dataRange.getNumRows(); i++) {
var description = dataRange.getCell(i, 2).getValue()
var category = assignCategory(description);
if (category) dataRange.getCell(i, 6).setValue(category);
}
}
function assignCategory(description) {
description = description.toLowerCase();
var keys = Object.keys(translations);
for (var i=0; i<categories.length; i++) {
var currentKey = keys[i];
if (description.indexOf(currentKey) > -1)
return translations[currentKey];
}
}
Эта версия немного сложнее. Он будет составлять «описание» каждой строки в нижнем регистре для лучшего сравнения с вашим словарем, а также использует indexOf для проверки того, появляется ли «ключ перевода» в описании, а не для точного соответствия.
* 1018Однако вы должны знать, что этот метод будет значительно медленнее, и что сценарий может прерваться (см.
GAS Quotas ). Вы могли бы реализовать способы «возобновить» операции скрипта, чтобы вы могли перезапустить его и продолжить с того места, на котором он остановился, в случае, если это мешает вашим операциям.