function onEdit(e){
let row = e.range.getRow();
let column = e.range.getColumn();
let cache = CacheService.getScriptCache();
cache.putAll({
"row": `${row}`,
"column": `${column}`
});
}
function onOpen() {
let cache = CacheService.getScriptCache();
let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let row = cache.get("row");
let column = cache.get("column");
sheet.getRange(+row, +column).activate();
SpreadsheetApp.flush();
}
Математиком-теоретиком больше быть не хочу.может тогда математиком практиком?
HTMLElement.prototype.waitFor = function(event_name) {
if (event_name) {
return new Promise((res, rej) => {
const listener = function() {
res()
this.removeEventListener(event_name, listener)
};
this.addEventListener(event_name, listener);
})
} else {
throw 'No event passed to waitFor method!';
}
}
async function foo() {
const start = new Date();
await document.querySelector('body').waitFor('click');
console.log('uspeshno dojdalis clicka, jdali celih ' + ((new Date().getTime() - start.getTime())/1000) + ' sekund');
}
foo();
/**
*
*/
function createTrigger() {
ScriptApp.getProjectTriggers().forEach(
(trigger) =>
trigger.getHandlerFunction() === 'saveData' &&
trigger.getEventType() === ScriptApp.EventType.CLOCK &&
(ScriptApp.deleteTrigger(trigger) ||
console.info(`Tirgger ${trigger.getUniqueId()} was deleted`))
);
// every minutes for testing
// ScriptApp.newTrigger('saveData').timeBased().everyMinutes(1).create();
// at 9 o'clock every days
ScriptApp.newTrigger('saveData').timeBased().atHour(9).everyDays(1).create();
}
/**
*
*/
function saveData() {
const book = SpreadsheetApp.openById(
'1FUSSiDQoXyvKXfzYydoUUfcCGYq_TskpRiwfb28_1Z0'
);
const sheet = book.getSheetByName('Лист1');
const value = sheet.getRange('A1').getValue();
book.getSheetByName('Лист2').appendRow([new Date(), value]);
console.info(`saveData was called successful`);
}
1FUSSiDQoXyvKXfzYydoUUfcCGYq_TskpRiwfb28_1Z0
на ваш.Лист1!A1
и добавляет новую строку на Лист2
.createTrigger
один раз.def is_command(text):
"""
Checks if `text` is a command. Telegram chat commands start with the '/' character.
:param text: Text to check.
:return: True if `text` is a command, else False.
"""
if (text is None): return None
return text.startswith('/')