=ARRAYFORMULA(REGEXEXTRACT(A2:A;".*?gclid=(.*)$"))
function run() {
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName('Решение (скриптами)');
const range = sheet.getRange('A:A');
const values = range.getValues();
const data = values.map(row => {
const [undefined, value] = String(row[0]).split('gclid=');
return [value ?? ''];
});
range.setValues(data);
}
=VALUE(SUBSTITUTE(IMPORTXML(CONCATENATE("http://www.nbrb.by/Services/XmlExRates.aspx?ondate=";TEXT($A4; "mm/dd/yyyy"));CONCATENATE("//DailyExRates//Currency[@Id=";B$3;"]/Rate"));".";","))
function myFunction(e) {
try {
if (!e || !e.range) return;
if (e.range.columnStart > 1) {
var targetCell = SpreadsheetApp.getActiveSheet()
.getRange(e.range.rowStart, 1, e.range.rowEnd - e.range.rowStart + 1);
/* if you want insert the date once uncomment the row below
*
**/
// if(!targetCell.getValue())
targetCell.setValue(new Date());
}
} catch (err) {
SpreadsheetApp.getActiveSpreadsheet().toast(err.message, 'Error!!1');
}
}
function doGet(e){
/* если `e` содержит параметр на отключение Формы */
form.setAcceptingResponses(false);
/* если `e` содержит параметр на разрешение Формы принимать ответы */
form.setAcceptingResponses(true);
}
HtmlService
.function doGet() {
return ContentService.createTextOutput(HtmlService.createTemplateFromFile("rss").evaluate().getContent())
.setMimeType(ContentService.MimeType.RSS);
}
function doGet() {
var xml = XmlService.getPrettyFormat().format(document);
return ContentService.createTextOutput(xml)
.setMimeType(ContentService.MimeType.RSS);
}
=QUERY({A2:A6,A2:C6},"select Col1, Col2 format Col1'', Col2'#.00'")
=QUERY({A2:A6,ARRAYFORMULA(ROUND(A2:A6,2))},"select Col1, Col2")
function oneButtonMacros() {
switch (SpreadsheetApp.getRange('Sheet1!A1').getValue()) {
case 1:
macros1();
break;
case 2:
macros2();
break;
case 3:
macros3();
break;
}
}
function main() {
var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(
'данные'
);
var dataArray = dataSheet.getDataRange().getValues();
var listSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(
'список сайтов'
);
var listArray = listSheet.getDataRange().getValues();
// Строим индекс
var listIndex = listArray.map(function(r){
return r[0];
});
for (var j = 1; j < dataArray.length; j++) {
if(dataArray[j][0] === '') continue;
var pos = listIndex.indexOf(dataArray[j][0]);
if (pos >= 0) {
// Обновляем
listSheet.getRange(pos + 1, dataArray[j].length + 1).setValue(new Date());
} else {
// Добавляем
listSheet.appendRow([].concat(dataArray[j], new Date()));
}
}
}
SpreadsheetApp.openById('blah-blah')
.getSheets()
.forEach(function(sheet) {
var name = sheet.getRange('J2').getValue();
if (name)
try {
sheet.setName(name);
} catch (error) {
console.error('CATCHED', error);
}
});
userActionRenameSheets
демонстрирует это./* exported userActionRenameSheets */
/**
* Действие пользователя или триггера. Внешний вызов без параметров
*/
function userActionRenameSheets() {
var spreadsheet = SpreadsheetApp.openById('blah-blah');
/** @type {filterSheets} */
var filterSheets = function(sheet) {
return true;
};
/** @type {renameRule} */
var renameRule = function(sheet) {
var name = sheet.getRange('J2').getValue();
if (name)
try {
sheet.setName(name);
} catch (error) {
console.error('CATCHED', error);
}
return sheet;
};
var sheets = renameSheetsByCellValue_(spreadsheet, filterSheets, renameRule);
// Делать что-нибудь дальше
}
/**
* Переименовывает листы в Таблице согласно заданным правилам
*
* @param {GoogleAppsScript.Spreadsheet.Spreadsheet} spreadsheet Таблица,
* в которой производим переименование
* @param {filterSheets} Фильтр листов на всякий случай, вдруг что-то надо да пропустить
* @param {renameRule} Правило переименования, может возвращать что угодно
* @param {any[]} Массив отфильрованных результатов функции renameRule
*/
function renameSheetsByCellValue_(spreadsheet, filterSheets, renameRule) {
var res;
var sheets = spreadsheet.getSheets();
if (filterSheets) res = sheets.filter(filterSheets) || sheets;
if (renameRule) res = res.map(renameRule);
return res;
}
/**
* Фильтр листов
* @callback filterSheets
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet Текущий лист
* @param {number} index Текущий индекс массива
* @param {GoogleAppsScript.Spreadsheet.Sheet[]} sheets Текущий массив
* @returns {boolean}
*/
/**
* Правило переименования
* @callback renameRule
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet Текущий лист
* @param {number} index Текущий индекс массива
* @param {GoogleAppsScript.Spreadsheet.Sheet[]} sheets Текущий массив
* @returns {any}
*/
from googleapiclient.discovery import build
service = build('sheets', 'v4')
response = service.spreadsheets().get(spreadsheetId = spreadsheetId,
fields = 'sheets(data.rowData.values.note)').execute()
print(response)