const uri = [[B_TITLE]]; const encoded = encodeURIComponent(uri); [[ENCODED]] = encoded;
В перем [[B_TITLE]] находится как пример: Отправка данных в Google Docs GET запросами
На выходе имеем в [[ENCODED]] такое уже сконверченное: %D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%20Google%20Docs%20GET%20%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0%D0%BC%D0%B8
function creator({docFile_Doverennost, docFolder_TVO}) {
}
creator
убрать вот эти строки// это константы для шаблонов
const docFile_Doverennost = ("id шаблона докфайла В")
// это константы для каталогов
const docFolder_TVO = ("id папки С")
const items = [
{
docFile_Doverennost: "XYZ_123",
docFolder_TVO: "ABC_456"
},
{
docFile_Doverennost: "XYZ_4352134523",
docFolder_TVO: "ABC_456"
}
];
items.forEach(creator);
Cheerio
.const url = 'https://www.pdfah.com/product/4944/hylo-gel-lubricating-eyes-drops-%E0%B8%99%E0%B9%89%E0%B8%B3%E0%B8%95%E0%B8%B2%E0%B9%80%E0%B8%97%E0%B8%B5%E0%B8%A2%E0%B8%A1%E0%B8%8A%E0%B8%99%E0%B8%B4%E0%B8%94%E0%B9%80%E0%B8%88%E0%B8%A5-10ml-300%E0%B8%AB%E0%B8%A2%E0%B8%94';
function getData() {
const data = UrlFetchApp.fetch(url);
const content = data.getContentText();
const exec = /application\/ld\+json">(.*?)<\/script>/gi
.exec(content.replace(/[\r\n]+/g, ' '));
if (exec) {
const product = JSON.parse(exec[1]);
console.log(product);
}
}
function Q(table, query, i) {
return [table, query][i];
}
=QUERY(
Q({1\2\3\4;5\6\7\8};"select Col1, Col2";0);
Q({1\2\3\4;5\6\7\8};"select Col1, Col2";1);
0
)
function run() {
const book = SpreadsheetApp.getActive();
const matcher = new RegExp('метка (\\d+$)', 'i');
const sheetChecker = (sheet) => {
const [_, num] = sheet.getSheetName().match(matcher) || [];
if (Number(num) >= 2 || Number(num) <= 6)
book.deleteSheet(sheet);
}
deleteSheets_(book, sheetChecker);
}
/**
* @param {globalThis.SpreadsheetApp.Spreadsheet} book
* @param {SheetChecker} sheetChecker
* @returns {void}
*/
function deleteSheets_(book, sheetChecker) {
book.getSheets().forEach(sheet => {
if (sheetChecker(sheet)) {
book.deleteSheet(sheet);
}
});
}
/**
* Проверяет, подходит ли лист для обработки
* @callback SheetChecker
* @param {globalThis.SpreadsheetApp.Sheet} sheet
* @returns {boolean}
*/
sheetChecker
, можно удалять любые листы, которые будут валидны проверке в этой функции. const isFormula_ = value => String(value).charAt(0) === '=';
const editValue_ = value => isFormula_(value) ? String(value).substring(1) : value;
function onEdit(e) {
const sheet = e.range.getSheet();
if (
sheet.getName() === 'Пример' &&
e.range.getRow() > 1 &&
e.range.getColumn() === 8 &&
isFormula_(e.value)) {
e.range.setValue(editValue_(e.value));
}
}
function run() {
const book = SpreadsheetApp.getActive();
const data = book.getSheetByName('dataBase').getRange('A:A').getValues();
const main = book.getSheetByName('main');
['E9:E13', 'J9:J13', 'E23:E27', 'J23:J27'].forEach(addr => {
console.log(addr);
const range = main.getRange(addr);
range.setValues(data.splice(0, range.getNumRows()));
});
}
IMPORTXML
вы можете получить только название, артикул и количество звезд.A:A
и отправляет пользователю в чат CHAT_ID
function run() {
const data = SpreadsheetApp.openById('1cZQsbkCFgA3MOqiaAPiMyp2Jf_xHXsRc_TeuzVkMFQI')
.getSheetByName('Лист2').getDataRange().getValues();
const text = data[Math.floor(Math.random() * data.length)][0];
const res = sendMessage_({ chat_id: CHAT_ID, text });
console.log(res.getContentText());
}
function update() {
const book = SpreadsheetApp.getActive();
const sheet = book.getSheetByName('Пример');
sheet.getRange('A2:A')
.setValues(sheet.getRange('A2:C').getValues()
.map(([kladovshik, _, externalSource]) =>
[externalSource === 'Продан' ? externalSource : kladovshik]));
}
const datainfo = JSON.parse(response);
datainfo.suggestions.forEach(suggestion => console.log(suggestion.value));
const datainfo = JSON.parse(response);
const values = datainfo.suggestions.map(suggestion => [suggestion.value]);
book.getSheetByName('Sheet1').clearContent()
.getRange(1, 1, values.length, values[0].length).setValues(values);