/**
* Open the url in a new tab
* @param {string} url
*/
function openUrlInBrowser_(url) {
const tmp = HtmlService.createTemplateFromFile('app');
tmp.url = url;
const htmlOutput = tmp.evaluate();
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, 'Opening url ...');
}
app.html
в проекте/**
* Open the url in a new tab
* @param {string} url
*/
function openUrlInBrowser_(url) {
const tmp = HtmlService.createTemplateFromFile('app');
tmp.url = url;
const htmlOutput = tmp.evaluate();
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, 'Opening url ...');
}
ARRAYFORMULA
.=ARRAYFORMULA(IFERROR(REGEXREPLACE(I7; "[^"&Сетка_чисел_2&"]";"");""))
ARRAYFORMULA
L2:Q7
. Берется текст из ячейки $B$1
и раскидывается формулой=ARRAYFORMULA(IFERROR(REGEXREPLACE($B$1; "[^"&L2:Q7&"]";"");""))
SUMPRODUCT
одна из них=SUMPRODUCT(--(A2:A13=E2);B2:B13;C2:C13)
--
- это пережиток. Проверку на типы можно пропустить.=SUMPRODUCT(A2:A13=E2;B2:B13;C2:C13)
=INDEX(IMPORTHTML("https://readmanga.me/hero__i_quit_a_long_time_ago";"table";0);2;)
=REGEXEXTRACT(
INDEX(IMPORTHTML("https://readmanga.me/hero__i_quit_a_long_time_ago";"table";0);2;1);
".*?\-.*?(\d+)"
)
=ARRAYFORMULA(REGEXREPLACE("190919754153912"; "[^"&{1\4\7;2\5\8;3\6\9}&"]";""))
Сетка_чисел
Цифровое_представление
.=ARRAYFORMULA(REGEXREPLACE(Цифровое_представление; "[^"&Сетка_чисел&"]";""))
IMPORTXML
=INDEX(IMPORTXML(B1;"//h4/a");1;1)
=INDEX(IMPORTXML(B1;"//span[@class="elem_year"]/a");1;1)
=SUMPRODUCT(--MID(Цифровое_представление;ROW(INDIRECT("1:"&LEN(Цифровое_представление)));1))
Цифровое_представление
- это ячейка, в которой текст представлен в виде последовательности чисел=IFERROR(
MOD(SUMPRODUCT(--MID(Цифровое_представление;ROW(INDIRECT("1:"&LEN(Цифровое_представление)));1));9)
+(MOD(SUMPRODUCT(--MID(Цифровое_представление;ROW(INDIRECT("1:"&LEN(Цифровое_представление)));1));9)=0)*9;
-1
)
SUMPRODUCT
перечисляет и складывает все цифры.sync
. Ибо это работает как лом - надежно и безотказно. Главное знать, когда использовать можно.const values = s.getRange(1, col1, s.getLastRow(), col1).getValues();
const count = values.filter(
(row, i, arr) => arr[i + 1] && compareAsDate_(row[0], arr[i + 1][0])
);
console.log(count);
/**
*
* @param {any} a
* @param {any} b
*/
function compareAsDate_(a, b) {
return (
a && b && a.getTime && b.getTime && a.toDateString() === b.toDateString()
);
}
~/.cache/google-chrome/Default/Cache
""&C5:C12
=IMPORTXML(
"https://www.gismeteo.ru/weather-moscow-4368/";
"//div[@class='tab-content']//span[contains(@class,'unit_temperature_c')]"
)