/**
* Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
* [ ProgrammerForever (c) 2020 ]
* @return Не возвращает значений
*/
function onEdit(event) {
var sheet = event.source.getActiveSheet();//Текущий лист
var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
var row = event.range.getRow(); //Номер строки
var col = event.range.getColumn(); //Номер столбца
var newValue = event.value; //Новое значение
var oldValue = event.oldValue; //Старое значение
var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
if((col===1)&&(row===1)&&(sheet.getName==="Sheet1")){
// Что-то делаем
};
};
{"response":{"count":0,"items":[]}}
let dictionary = {
stop_words: [
{ word: "Not_Malicious", color_code: "#ea4300" },
{ word: "NOT_Virus", color_code: "#ea0035" },
{ word: "NOT_Fake_Message", color_code: "#004335" },
{ word: "NOT_Misleading", color_code: "#ea4005" },
{ word: "NOT_Sound", color_code: "#e00335" },
{ word: "NOT_JSalert", color_code: "#0a0305" },
],
};
// Тут, для производительности, можно предварительно сделать все TextStyle вместо color_code
function _1() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// range диапазон поиска
let range = sheet.getRange("E:E").getValues();
range.forEach((item, row) => {
for (let column = 0; column < item.length; column++) {
if (typeof item[column] === "string" && item[column] != "") {
let richText = SpreadsheetApp.newRichTextValue().setText(item[column]);
// item[column] текст ячейки
dictionary.stop_words.forEach(({word, color_code}) => {
let arr = searchIndex(
word.toLocaleLowerCase(),
item[column].toLocaleLowerCase()
);
let color = SpreadsheetApp.newTextStyle()
.setForegroundColor(color_code)
.build();
arr.forEach((ind) => {
richText.setTextStyle(ind.startIndex, ind.endIndex, color);
});
sheet
.getRange(row + 1, column + 1)
.setRichTextValue(richText.build());
});
}
}
});
}
// ... остальной код
/**
* Возникает при изменении ячейки
* @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
* [ ProgrammerForever (c) 2020 ]
* @return Не возвращает значений
*/
function onEdit(event) {
var as = event.source.getActiveSheet();//Текущий лист
var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
var row = event.range.getRow(); //Номер строки
var col = event.range.getColumn(); //Номер столбца
var newValue = event.value; //Новое значение
var oldValue = event.oldValue; //Старое значение
var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
let archiveSheetName = "sheet";
let ss = SpreadsheetApp.getActiveSpreadsheet();
let archiveSheet = ss.getSheetByName(archiveSheetName) || ss.insertSheet(archiveSheetName);
archiveSheet.appendRow([new Date(), userEmail, as.getName(), address, oldValue, newValue]);
};
let range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName().getDataRange();
let values = range.getValues();
const formatDate = (date) => Utilities.formatDate(date, "GMT+3", "dd.MM.yyyy");
let now = formatDate(new Date());
let newValues = values.map(row=>{
let [date, ...rest] = row;
let formattedDate = formatDate(date);
return now===formattedDate?[now, ...rest]:row;
});
range.setValues(newValues);
range.setValues(newData); // Тут затираются формулы
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:C7");
// Sorts by the values in the first column (A)
range.sort(1);
// Sorts by the values in the second column (B)
range.sort(2);
// Sorts descending by column B
range.sort({column: 2, ascending: false});
// Sorts descending by column B, then ascending by column A
// Note the use of an array
range.sort([{column: 2, ascending: false}, {column: 1, ascending: true}]);