var fileIterator = DriveApp.getFilesByName(fileName);
while(fileIterator.hasNext()){
var textFromFile = fileIterator.next().getAs(ContentService.MimeType.TEXT);
};
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name).getRange(row, column).setValue(textFromFile );
var inData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1").getRange("A1:C").getValues();
inData = inData.filter(row=>row[2]==="example@site.com");
function onEdit(e) {
SpreadsheetApp.getActiveRange().setValue(Utilities.formatString("email: %s",e.user.getEmail() ));
}
function onEditTrigger(event) {
var userEmail = event.user.getEmail(); //Email пользователя
//Что-то делаем...
};
=ГИПЕРССЫЛКА("https://example.com/cases/"&A1)
=если(a1<=0;(1+a1^2)/(корень(1+a1^4));1*a1+((sin(a1))^2)/(2+a1))
x = R*cos(phi) + x0
y = R*sin(phi) + y0
phi = (0,1,2...N-1)*(2*pi/N)
=СУММ(SPLIT(A1;"+"))
/**
* Копирует значения и форматирование из fromRange в toRange
*
* @param {"A1:B10"} fromRange Исходный массив
* @param {"D1:E10"} toRange Конечный массив
* @return 0 если выполнилось без ошибок, или описание ошибки
* @customfunction
*/
function copyRange(fromRange, toRange){
var ss = SpreadsheetApp.getActiveSpreadsheet();
try{
var source = ss.getRange(fromRange);
var dest = ss.getRange(toRange);
dest.setValues(source.getValues());
dest.setBackgrounds(source.getBackgrounds());
// и т.д. Есть много чего из форматирования, получается по get... ставится по set...
return 0;//Завершение без ошибок
}catch(err){
Logger.log(Utilities.formatString((arguments.callee.toString().match(/function ([^(]*)\(/)[1]) + "(%s) - %s", Array.from(arguments).join(", "), err.message)); //Ошибку в лог
return err.message;//Завершение с ошибкой
};
};
function syncRanges(){
copyRange("b7:b11", "c7:c11"); // b7:b11 >> c7:c11
copyRange("f1:f20", "g1:g20"); // f1:f20 >> g1:g20
//и т.п. можно вызывать несколько раз для разных диапазонов
};