=NUMBERTEXT(1) // one
=NUMBERTEXT(1;"ru") // один
=NUMBERTEXT(1;"uk") // один
=MONEYTEXT(1; "USD"; "uk") // Один долар США
Utilities.sleep(1000);
как мертвому припарка./* eslint-disable require-jsdoc */
/* eslint-disable no-undef */
function doAction() {
var result = readBaseData('22-05-2019');
// If found data for this date...
if (result != null) {
var doc = createNewDoc(' iskovoe ' + result[0][0]);
fillTemplate(doc, result);
}
}
// inDoc - its a empty template, inData - data for filling template
function fillTemplate(inDoc, inData) {
// Getting count of files in folder
var NUM = DocsList.getFolderById(
'1a3uCa9wRyOzio-C7FVacOykuLoxCqTs3'
).getFiles().length;
// Replace masks (Don't work [NUM] or $NUM or something else)
inDoc.replaceText(
'x',
'https://docs.google.com/spreadsheets/d//edit#gid=0...'
);
inDoc.replaceText(
'x',
'https://docs.google.com/spreadsheets/d//edit#gid=0...'
);
inDoc.replaceText(
'x',
'https://docs.google.com/spreadsheets/d//edit#gid=0...'
);
inDoc.replaceText(
'x',
'https://docs.google.com/spreadsheets/d//edit#gid=0...'
);
// get first table in document
var table = curDoc.getTables()[0];
for (i = 0; i < inData.length; i++) {
var row = table.appendTableRow();
row.appendTableCell(inData[i][1]);
row.appendTableCell(inData[i][2]);
}
curDoc.saveAndClose();
}
function createNewDoc() {
// Making copy of blank file
var blankDoc = DocsList.getFileById(
'19vYiThaKdgQ6eeiRg5nPewzP_Eab7nkLUwyt49jCC1Q'
).makeCopy(iskovoe);
blankDoc.addToFolder(
DocsList.getFolderById('1a3uCa9wRyOzio-C7FVacOykuLoxCqTs3')
);
// return working doc and table base
return (curDoc = DocumentApp.openById(blankDoc.getId()));
}
// get range and sort only for day from parameter
function readBaseData(inDate) {
var ssDoc = SpreadsheetApp.openById(
'1ZCNO6Iae2RwDdKAlQX6TF5mpp4xHHB4v1mXK233uJls'
).getActiveSheet();
// get filled range
var data = ssDoc.getDataRange().getValues();
// create new array with data to inDate,
// for start from 1 because first row is text column headers
var filteredData = new Array([]);
for (i = 1; i < data.length; i++) {
data[i][0] = convertDate(data[i][0]);
if (data[i][0] == inDate && data[i][3] == 1) {
filteredData[i - 1] = data[i];
}
}
return filteredData;
}
var files = DriveApp.searchFiles('mimeType="application/vnd.google-apps.spreadsheet"');
DriveUser
. Это объект системы, поэтому вам необходимо воспользоваться одним из его методов, для получения информации. Например,...
file.getOwner().getEmail()
...
getTime
.function isDate(value){
return value && value.getTime;
}
function isDate(date){
return date instanceof Date && !isNaN(date.valueOf());
}
var birthday1 = ss1.getRange("D8").getValue();
var birthday = isDate(birthday1) ?
Utilities.formatDate(birthday1, "GMT+3", "dd-MM-yyyy") :
undefined;
=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);
}
function doGet(e){
/* если `e` содержит параметр на отключение Формы */
form.setAcceptingResponses(false);
/* если `e` содержит параметр на разрешение Формы принимать ответы */
form.setAcceptingResponses(true);
}
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}
*/
myFunction
на что-то вроде:function recordToMain(){
// Берет диапазон 'Источник!B4:B8' активной Таблицы, т.о. это встроенный скрипт
var data = SpreadsheetApp.getActive().getRange('Источник!B4:B8')
.getValues().map(function(row){return row[0];});
var url = 'https://script.google.com/macros/s/ZZZ/exec';
var options = {
method: 'POST',
headers: {
ContentType: 'application/json'
},
payload: JSON.stringify(data),
muteHttpExceptions: true
};
UrlFetchApp.fetch(url, options);
};
function doPost(e) {
SpreadsheetApp.openById('YYY') // Должна существовать
.getSheetByName('Приемник') // Должен быть лист 'Приемник'
.appendRow([new Date()].concat(JSON.parse(e.postData.contents)));
}
url_master
для первой функции. > new String('Hello world!') == 'Hello world!'
<· true
> new String('Hello world!') === 'Hello world!'
<· false
/**
* @param {GoogleAppsScript.Spreadsheet.Sheet} sheet Лист Таблицы
* @param {number} column Номер столбца
* @param {number} [startRow] Пропускает количество строк сначала
* @param {number} [numColums] Количество возвращаемых колонок
* @returns {Object[][]} Массив значений
* @see {@link https://toster.ru/q/549725}
*/
var getValuesFromColumn = function(sheet, column, startRow, numColums) {
startRow = startRow || 1;
numColums = numColums || 1;
var lastRow = sheet.getLastRow();
return sheet
.getRange(startRow, column, lastRow - startRow + 1, numColums)
.getValues();
};
var arr = getValuesFromColumn(mainSheet, 3, 3, 2);
/**
* Get an array of all LinkUrls in the document. The function is
* recursive, and if no element is provided, it will default to
* the active document's Body element.
*
* @param {Element} element The document element to operate on.
* .
* @returns {Array} Array of objects, vis
* {element,
* startOffset,
* endOffsetInclusive,
* url}
*/
function getAllLinks(element) {
var links = [];
element = element || DocumentApp.getActiveDocument().getBody();
if (element.getType() === DocumentApp.ElementType.TEXT) {
var textObj = element.editAsText();
var text = element.getText();
var inUrl = false;
for (var ch=0; ch < text.length; ch++) {
var url = textObj.getLinkUrl(ch);
if (url != null) {
if (!inUrl) {
// We are now!
inUrl = true;
var curUrl = {};
curUrl.element = element;
curUrl.url = String( url ); // grab a copy
curUrl.startOffset = ch;
}
else {
curUrl.endOffsetInclusive = ch;
}
}
else {
if (inUrl) {
// Not any more, we're not.
inUrl = false;
links.push(curUrl); // add to links
curUrl = {};
}
}
}
}
else {
var numChildren = element.getNumChildren();
for (var i=0; i<numChildren; i++) {
links = links.concat(getAllLinks(element.getChild(i)));
}
}
return links;
}