def get_data(cookies, id):
base_url = 'https://site.com'
method_url = '/api'
headers = {
'id': str(id),
'accept': '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://site.com',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'method': 'GET',
'mode': 'cors',
'credentials': 'include'
}
with requests.Session() as session:
for cookie in cookies:
session.cookies.set(cookie['name'], cookie['value'])
url = base_url + method_url
response = session.get(url=url, headers=headers)
return response
/**
* Декодирует строку вида %uXXXX%uXXXX и/или %XX в текст
* Боев Григорий (с) 2020 (telegram @ProgrammerForever)
*
* @param {string} encoded Кодированный текст
* @return Декодированный текст
* @customfunction
*/
function uEncode(encoded) {
return encoded.split('%')
.filter(el=>el!='')
.map(el=>el[0]==='u'?el.substring(1):el)
.map(el=>parseInt(el,16))
.map(code=>String.fromCodePoint(code))
.join('');
}
let now = new Date();
let tomorrow = new Date(+now+24*60*60*1000);
let maxRows = sheet.getMaxRows();
let maxColumns = sheet.getMaxColumns();
let data = sheet.getRange(1, 1, maxRows, maxColumns).getValues();
sheet\.getRange\(\s*(.*?)\s*,\s*(.*?)\s*\)\.getValue\(\)
inData[$1][$2]
function setData(){
/* Боев Григорий (с) 2020 (telegram @ProgrammerForever) */
const FIRST_ROW = 3; // Первая строка
const FIRST_OUT_COL = 10; // Первый столбец, Сентябрь
const FIRST_IN_COL = 7; // Первый столбец с исходными данными
const DATA_WIDTH = 3; // Столбцов с данными
const SHEET_NAME = "Лист1"; // Имя листа
let now = new Date();
let month = now.getMonth();//Либо получаете номер месяца (от 0 до 11) анализируя вашу ячеййку
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
let inRange = sheet.getRange(FIRST_ROW, FIRST_IN_COL, sheet.getMaxRows(), DATA_WIDTH);
let inData = inRange.getValues();
let outRange = sheet.getRange(FIRST_ROW, FIRST_OUT_COL + month*DATA_WIDTH, inData.length, DATA_WIDTH);
outRange.setValues(inData);
};
data>=row[data_col] and data1<row[data_col]
=filter(A:A;B:B>=data;B:B<data1)
//Telegram - @ProgrammerForever
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; //Указываем на каких листах должен работать скрипт
//Можно при желании ещё фильтровать по строке/столбцу (row/col), или по старому/новому значению (oldValue/newValue)
const archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Архив");
archive.getRange(archive.getLastRow()+1, 1).setValue(
formatDateTime(new Date())+" " + "[" + ss.getName() + "!" + address + "] '" + (oldValue==undefined?"":oldValue) + "' >> '" + (newValue==undefined?"":newValue) +"'"
);
};
function formatDate(date) {
try{
var dd = date.getDate();
if (dd < 10) dd = '0' + dd;
var mm = date.getMonth() + 1;
if (mm < 10) mm = '0' + mm;
var yy = date.getFullYear() % 100;
if (yy < 10) yy = '0' + yy;
return dd + '.' + mm + '.' + yy;
}catch(err){
return "";
};
}