function onEdit(e) {
const range = e.range;
const sheet = range.getSheet();
const sheetName = sheet.getName();
const row = range.getRow();
const column = range.getColumn();
if (sheetName === 'Лист4' && column === 21 && row > 1) {
const range2 = range.offset(0, 1);
const value2 = range2.getValue();
range2.setValue(+value2 + +e.value);
range.setValue(null);
}
}
function run2() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Пример 2');
sheet.sort(5);
const values = sheet.getDataRange().getValues();
const buffer = {
value: values[values.length - 1][1]
};
values.forEach((_, i, arr) => {
const j = arr.length - 1 - i;
const value = arr[j][1];
if (value !== buffer.value) {
sheet.insertRowAfter(j + 1);
buffer.value = value;
}
});
}
function copyRange() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Пример');
const fromRange = sheet.getRange('A2:C4');
const fromValues = fromRange.getValues();
const fromColors = fromRange.getBackgrounds();
const values = fromValues.filter(([_, __, value]) => value !== 'Закрыт');
const colors = fromColors.filter((_, i) => fromValues[i][2] !== 'Закрыт');
const toRange = sheet.getRange(1, 5, values.length, values[0].length);
sheet.getRange(1, 5, sheet.getLastRow(), 3).clear();
toRange.setValues(values).setBackgrounds(colors);
}
function run() {
const from = SpreadsheetApp.openById(
'1DrMcZylPeacuZm7zTxRZmd3hcx1l0pKS2RjeqSphUeE'
);
const fromSheet = from.getSheetByName('Данные');
const fromData = fromSheet.getDataRange().getValues().slice(1);
const to = SpreadsheetApp.openById(
'1LFgJE1cCRNM4PoVAWmZRPCm5BbdsAN5YkhgxC7okJc8'
);
const toSheet = to.getSheetByName('Сводные');
const toDataIndex = toSheet
.getDataRange()
.getValues()
.slice(1)
.filter((row) => row[5] !== '')
.map((row) => row[5]);
const data = fromData.filter((row) => toDataIndex.indexOf(row[5]) === -1);
if (data.length)
toSheet
.getRange(toSheet.getLastRow() + 1, 1, data.length, data[0].length)
.setValues(data);
}
function triggerSort(e) {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Sheet1');
sheet.sort(2, false).sort(1);
}
Диалоги пользовательского интерфейса не могут быть вызваны функциями, запускаемыми триггером, они должны запускаться действием пользователя, то есть щелчком по пункту меню или какой-либо кнопкой, которая вызывает функцию, отображающую пользовательский интерфейс.
/**
* Очищает B4, если L4 содержит значение "пусто".
* Работает на листе Sheet3
*/
function run() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Sheet3');
const valueL4 = sheet.getRange('L4').getValue();
if (valueL4 === 'пусто')
sheet.getRange('B4').clearContent();
}
function myFunction() {
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName('Лист');
const range = sheet.getRange('A1:L4');
const values = range.getValues();
range.setValues(calculate_(values));
}
/**
* @param {any[][]} values
* @returns {any[][]}
*/
function calculate_(values) {
return values.map((row, i) => {
const collection = row.slice(0, 3);
return row.map(((cell, j) => {
if (i < 1 || j < 3) return cell;
const header = values[0][j];
return collection.includes(header) ? 1 : '';
}));
});
}
function copyFiles(fromId, toId) {
var srcFldr = DriveApp.getFolderById(fromId);
var srcFiles = srcFldr.getFiles();
var desFldr = DriveApp.getFolderById(toId);
var desFiles = desFldr.getFiles();
var dfnA = [];
while (desFiles.hasNext()) {
var df = desFiles.next();
dfnA.push(df.getName());
}
while (srcFiles.hasNext()) {
var sf = srcFiles.next();
if (dfnA.indexOf(sf.getName()) == -1) {
sf.makeCopy(sf.getName(), desFldr);
}
}
}
function run(){
copyFiles('ASDFASDFSDF2345234ADSFASDF', 'ASDFSDFasf452345345SAFDF-sagasdfASDF');
}
Exception: You do not have permission to call SpreadsheetApp.openById. Required permissions: https://www.googleapis.com/auth/spreadsheets
/**
* @customfunction
*/
function COLORED(range) {
const book = SpreadsheetApp.getActiveSpreadsheet();
const formula = book.getActiveRange().getFormula();
const [skip, addr] = formula.match(/\((.*)\)/) || [undefined, undefined];
if(addr){
const range = (/!/.test(addr) ? book : book.getActiveSheet()).getRange(addr);
return range.getBackgrounds().map(row => row.map(cell => {
let res = ''
switch(cell){
case '#4285f4': res = 'Да';
break;
case '#ea4335': res = 'Нет';
break;
default:
break;
}
return res;
}));
}
return '-';
}
sheet
указывал на нужный лист, например, вместоconst sheet = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName('Data')
const id = 'ABSDADFASDFSDFASDFASD123123';
const sheet = SpreadsheetApp
.getSpreadsheetById(id)
.getSheetByName('Data')
const id = 'ABSDADFASDFSDFASDFASD123123';
createNewGoogleDocs(id);