function _onEdit(e) {
let sheet = e.source.getActiveSheet();
let address = e.range.getA1Notation().toUpperCase();
var row = e.range.getRow();
let col = e.range.getColumn();
let newValue = e.value;
let oldValue = e.oldValue;
if ((-1 != whiteListSheetNames.indexOf(sheet.getName())) && (-1 != whiteListRangeNames.indexOf(address))) {
// Что-то делаем
};
};
statistic = statistic.map(x=>{
return [x.phone || "",
(x.finishedAt != null) ? new Date(x.finishedAt).toLocaleString("ru-RU", {timeZone: "Europe/Moscow"}) : "",
x.attemptsCount || "",
x.tagName || "",
x.jobStatus || "",
x.callDuration || "",
x.callJobId || "",
x.town || "",
x.fio || ""
];
})
SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName("Лист1") // Имя листа вывода
.getRange(1,1, statistic.length, statistic[0].length) // 1,1 - строка и столбец ячейки вывода
.setValues(statistic);
function arraysDiff(arr1, arr2) {
arr1 = [arr1].flat(Infinity);
arr2 = [arr2].flat(Infinity);
arr1 = arr1.filter(el=>-1===arr2.indexOf(el));
.map(el=>[el]);
return arr1;
}
=query(данные;"SELECT * WHERE B <> "&JOIN(" AND B <> ";список_исключений))
function onEdit(event) {
const whiteList = ["Лист1", "Лист2"];
let ss = event.source.getActiveSheet(); //Текущий лист
let address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
let row = event.range.getRow(); //Номер строки
let col = event.range.getColumn(); //Номер столбца
let newValue = event.value; //Новое значение
let oldValue = event.oldValue; //Старое значение
if (whiteList.indexOf(ss.getName())==-1) return; //Указываем на каких листах должен работать скрипт
//Что-то делаем...
};
Note that in Google Forms, user-interface elements are visible only to an editor who opens the form to modify it, not to a user who opens the form to respond.
function onSubmit(e) {
try{
// Что-то делаем
throw "Тут происходит ошибка";
}catch(err){
FormApp.getActiveForm().setConfirmationMessage(`Ошибка! ${err}`);
};
}
function getRoyalToysAll(url) {
let xml = UrlFetchApp.fetch(url).getContentText();
let document = XmlService.parse(xml);
let root = document.getRootElement();
let entries = root.getChildren('shop');
let long = entries[0];
let offers = long.getChild('offers').getChildren('offer');
let outData = [];
for (offer of offers) {
let id = offer.getAttribute('id').getValue();
let available = offer.getAttribute('available').getValue();
let price = offer.getChild('price').getValue();
//let stock_quantity = offer.getChild('stock_quantity').getValue();
let description = offer.getChild('description').getValue();
let brend = offer.getChild('brend').getValue();
let currencyId = offer.getChild('currencyId').getValue();
let categoryId = offer.getChild('categoryId').getValue();
let name = offer.getChild('name').getValue();
let vendorCode = offer.getChild('vendorCode').getValue();
let pictures = offer.getChildren('picture').map(el=>el.getValue());
pictures.length=6;
let params = [];
for (let pi=1; pi<=20; pi++){
let param = offer.getChild('param'+pi);
let data = param?[param.getAttribute('name').getValue(),'',param.getValue()]:['','',''];
params.push(...data);
};
let row = [id, available, price, description, brend, currencyId, categoryId, ...pictures, name, vendorCode, ...params];
outData.push(row);
}
return outData;
};
function test_getRoyalToysAll(){
const url = "https://royaltoys.com.ua/my/export/82f668de-8f05-478e-86f3-34224286999c.xml";
const sheetName = "Лист1";
let outData = getRoyalToysAll(url);
const outRange = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName(sheetName)
.getRange(1,1,outData.length, outData[0].length);
outRange.setValues(outData);
};
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/"; "Показатель!C2:C")
const formulaTemplate = '=IMPORTRANGE("https://docs.google.com/spreadsheets/d/"; "Показатель!C2")';
let range = spreadsheet.getRange('C2:C1240');
let formulas = range.getFormulas();
formulas = formulas.map((row,ri)=>row.map(f=>formulaTemplate.replace('!C2', '!C'+(ri+2))));
range.setFormulas(formulas);
/**
* Считает средний процент каждого игрока за месяц
* Telegram - @ProgrammerForever
*
* @param {range} data Исходные данные
* @return Средний процент каждого игрока за месяц
*/
function calc(data){
let sums = data[0]
.map((_, col) => data.map(row => row[col]))
.map(c=>c.reduce((a,v)=>a+=v,0));
let fractions = data.map((row,r)=>row.map((v,c)=>v/sums[c]));
return fractions.map(row=>row.reduce((a,v)=>a+=v,0));
};
const targetEmail = ``; // email для отправки
function f(){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let blob = ss.getAs(`application/pdf`);
try{
GmailApp.sendEmail(targetEmail, 'backup', 'pdf файл во вложении', {
attachments: [blob],
});
Logger.log(`Письмо отправлено`);
}catch(e){
Logger.log(e);
}
};
function onEdit(event) {
//Возникает при изменении ячейки
var ss = 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; //Старое значение
if (["Лист1","Лист2"].indexOf(ss.getName())==-1) return; //Указываем на каких листах должен работать скрипт
//Что-то делаем...
};
function onEdit(event) {
//Возникает при изменении ячейки
var ss = 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; //Старое значение
if (["Лист1","Лист2"].indexOf(ss.getName())==-1) return; //Указываем на каких листах должен работать скрипт
//Что-то делаем...
};
function arraysDiff(arr1, arr2) {
arr1 = arr1.flat(2);
arr2 = arr2.flat(2);
arr1 = arr1.filter(el=>arr2.indexOf(el)===-1);
arr1 = arr1.map(el=>[el]);
return arr1;
}