Примеры макросов на Р7 JavaScript ,
для помощи в миграции с Excel VBA
Запись данных в ячейку листа
Записывает данные (фразу "Hello world") в ячейку третьего столбца четвертой строки рабочего листа.
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("C4").SetValue("Hello world");
})();
Используемые методы: GetActiveSheet, GetRange, SetValue
VBA MS Office

Sub example()
Cells(4, 3) = "Hello world"
End Sub
Изменение цвета фона ячейки
Устанавливает синий цвет фона для ячейки B3.
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("B3").SetFillColor(Api.CreateColorFromRGB(0, 0, 250));
})();
Используемые методы: GetActiveSheet, GetRange, SetFillColor, CreateColorFromRGB
VBA MS Office

Sub example()
Range("B3").Interior.Color = RGB(0, 0, 250)
End Sub

Изменение цвета шрифта ячейки
Устанавливает красный цвет шрифта для ячейки B4.
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("B4").SetFontColor(Api.CreateColorFromRGB(255, 0, 0));
})();

Используемые методы: GetActiveSheet, GetRange, SetFontColor
VBA MS Office

Sub example()
Range("B4").Font.Color = RGB(255, 0, 0)
End Sub

VBA MS Office

Sub example()
Range("B4").Font.Color = RGB(255, 0, 0)
End Sub

Установка жирного шрифта в ячейке
Устанавливает жирный шрифт для ячейки A2.
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("A2").SetBold(true);
})();

Используемые методы: GetActiveSheet, GetRange, SetBold
VBA MS Office

Sub example()
Range("A2").Font.Bold = True
End Sub

Объединение диапазона ячеек
Объединяет выбранный диапазон ячеек.
JavaScript Р7

(function()
{
 Api.GetActiveSheet().GetRange("A1:B3").Merge(true);
})();

Используемые методы: GetActiveSheet, GetRange, Merge
VBA MS Office

Sub example()
Range("A1:B3").Merge
End Sub

Разъединение диапазона ячеек
Разъединяет выбранный диапазон ячеек.
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("C5:D10").UnMerge();
})();

Используемые методы: GetActiveSheet, GetRange, UnMerge
VBA MS Office

Sub example()
Range("C5:D10").UnMerge
End Sub

Установка ширины столбца B
Устанавливает ширину столбца
JavaScript Р7

(function()
{
 Api.GetActiveSheet().SetColumnWidth(1, 25);
})();

Используемые методы: GetActiveSheet, SetColumnWidth
VBA MS Office

Sub example()
Columns("B").ColumnWidth = 25
End Sub

Форматирование диапазона как таблицу
Форматирует диапазон ячеек A1:D10 как таблицу.
JavaScript Р7

(function()
{
Api.GetActiveSheet().FormatAsTable("A1:D10");
})();

Используемые методы: GetActiveSheet, FormatAsTable
VBA MS Office

Sub example()
Sheet1.ListObjects.Add(xlSrcRange, Range("A1:D10"), , xlYes).Name = "myTable1"
End Sub
Добавление диаграммы
Добавляет новую диаграмму в выбранный диапазон ячеек.
JavaScript Р7

((function()
{
Api.GetActiveSheet().AddChart("'Sheet1'!$C$5:$D$7", true, "bar", 2, 105 * 36000, 105 * 36000, 0, 0, 9, 0);
})();
Используемые методы: GetActiveSheet, AddChart
VBA MS Office

Sub example()
With ActiveSheet.ChartObjects.Add(Left:=300, Width:=300, Top:=10, Height:=300)
.Chart.SetSourceData Source:=Sheets("Sheet1").Range("C5:D7")
End With
End Sub
Выделение дубликатов
Выделяет дубликаты в выбранной области разными цветами для быстрого распознавания повторяющихся значений.
JavaScript Р7

(function () 
{
// Цвет фона ячеек с неповторяющимися значениями
var whiteFill = Api.CreateColorFromRGB(255, 255, 255);
// Текущий индекс диапазона цветов
var uniqueColorIndex = 0;
// Диапазон цветов для выделения повторяющихся значений
var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
Api.CreateColorFromRGB(204, 204, 255),
Api.CreateColorFromRGB(0, 255, 0),
Api.CreateColorFromRGB(0, 128, 128),
Api.CreateColorFromRGB(192, 192, 192),
Api.CreateColorFromRGB(255, 204, 0)];

// Функция для получения цвета для дубликатов
function getColor() {
// Если все уникальные цвета выбраны, начинаем сначала
if (uniqueColorIndex === uniqueColors.length) {
uniqueColorIndex = 0;
}
return uniqueColors[uniqueColorIndex++];
}

// Получаем активный лист
var activeSheet = Api.GetActiveSheet();
// Получаем выделение на активном листе
var selection = activeSheet.GetSelection();
// Карта значений в ячейках с количеством дубликатов
var mapValues = {};
// Диапазон всех ячеек
var arrRanges = [];
// Проходим по выделению
selection.ForEach(function (range) {
// Получаем значение из ячейки
var value = range.GetValue();
if (!mapValues.hasOwnProperty(value)) {
mapValues[value] = 0;
}
mapValues[value] += 1;
arrRanges.push(range);
});
var value;
var mapColors = {};
// Проходим по всем ячейкам выделения и устанавливаем выделение, если это значение повторяется более 1 раза
for (var i = 0; i < arrRanges.length; ++i) {
value = arrRanges[i].GetValue();
if (mapValues[value] > 1) {
if (!mapColors.hasOwnProperty(value)) {
mapColors[value] = getColor();
}
arrRanges[i].SetFillColor(mapColors[value]);
} else {
arrRanges[i].SetFillColor(whiteFill);
}
}
})();
Используемые методы: CreateColorFromRGB, GetActiveSheet, GetSelection, ForEach, GetValue, SetFillColor
VBA MS Office

Sub example()
Dim xRg As Range
Dim xTxt As String
Dim xCell As Range
Dim xChar As String
Dim xCellPre As Range
Dim xCIndex As Long
Dim xCol As Collection
Dim I As Long
On Error Resume Next
If ActiveWindow.RangeSelection.Count > 1 Then
xTxt = ActiveWindow.RangeSelection.AddressLocal
Else
xTxt = ActiveSheet.UsedRange.AddressLocal
End If
Set xRg = Application.InputBox("please select the data range:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
xCIndex = 2
Set xCol = New Collection
For Each xCell In xRg
On Error Resume Next
xCol.Add xCell, xCell.Text
If Err.Number = 457 Then
xCIndex = xCIndex + 1
Set xCellPre = xCol(xCell.Text)
If xCellPre.Interior.ColorIndex = xlNone Then xCellPre.Interior.ColorIndex = xCIndex
xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
ElseIf Err.Number = 9 Then
MsgBox "Too many duplicate companies!", vbCritical, "Kutools for Excel"
Exit Sub
End If
On Error GoTo 0
Next
End Sub
Нахождение следующей доступной пустой строки в рабочем листе
Этот макрос позволяет получить пустую строку в самом конце ваших данных (не между ними).
JavaScript Р7

(function ()
{
// Получаем активный лист
var activeSheet = Api.GetActiveSheet();
// Минимальный индекс строки
var indexRowMin = 0;
// Максимальный индекс строки
var indexRowMax = 1048576;
// Столбец 'A'
var indexCol = 0;
// Индекс строки для поиска пустой ячейки
var indexRow = indexRowMax;
for (; indexRow >= indexRowMin; --indexRow) {
// Получаем ячейку
var range = activeSheet.GetRangeByNumber(indexRow, indexCol);
// Проверяем значение
if (range.GetValue() && indexRow !== indexRowMax) {
range = activeSheet.GetRangeByNumber(indexRow + 1, indexCol);
range.Select();
break;
}
}
})();
Используемые методы: GetActiveSheet, GetRangeByNumber, Select
VBA MS Office

Sub example()
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
End Sub
Вставка текста
Вставляет текст в документ в текущей позиции курсора.
JavaScript Р7

(function()
{
var oDocument = Api.GetDocument();
var oParagraph = Api.CreateParagraph();
oParagraph.AddText("Hello world!");
oDocument.InsertContent([oParagraph]);
})();
Используемые методы: GetDocument, CreateParagraph, AddText, InsertContent
VBA MS Office

Sub example()
Selection.TypeText Text:="Hello world!"
End Sub
Курсы обмена валют
Возвращает информацию о курсах обмена за последние несколько дней и заполняет таблицу полученными значениями. В этом макросе представлен пример для валютной пары USD-EUR, но вы можете получить информацию о других курсах обмена, изменив значение переменной `sCurPair` ("EUR_USD", "BTC_USD" и т.д.).

В этом макросе используется сторонний сервис CurrencyConverterApi.com для получения информации о курсах обмена. Существует ограничение на количество запросов в час. Если этот лимит превышен, макрос не будет работать. Если вы хотите использовать этот макрос, лучше зарегистрироваться на сайте сервиса и использовать свой собственный ключ в коде макроса.

Вы можете назначить этот макрос автофигуре. При нажатии на неё макрос выполнится, таблица заполнится актуальными данными и соответствующий график обновится.
JavaScript Р7

(function()
{
var sCurPair = "USD_EUR";

function formatDate(d) {
var month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();

if (month.length < 2)
month = '0' + month;
if (day.length < 2)
day = '0' + day;

return [year, month, day].join('-');
}

function previousWeek(){
var today = new Date();
var prevweek = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
return prevweek;
}

var sDate = formatDate(previousWeek());
var sEndDate = formatDate(new Date());
var apiKey = 'ваш_ключ_от_API';
var sUrl = 'https://free.currconv.com/api/v7/convert?q='
+ sCurPair + '&compact=ultra' + '&date=' + sDate + "&endDate=" + sEndDate + '&apiKey=' + apiKey;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", sUrl, false);
xmlHttp.send();
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var oData = JSON.parse(xmlHttp.responseText);
for(var key in oData) {
var sheet = Api.GetSheet("Sheet1");
var oRange = sheet.GetRangeByNumber(0, 1);
oRange.SetValue(key);
var oDates = oData[key];
var nRow = 1;
for(var date in oDates) {
oRange = sheet.GetRangeByNumber(nRow, 0);
oRange.SetValue(date);
oRange = sheet.GetRangeByNumber(nRow, 1);
oRange.SetValue(oDates[date]);
nRow++;
}
}
}
})();
Используемые методы: GetSheet, GetRangeByNumber, SetValue
VBA MS Office

Sub example()
' ' Этот пример не имеет прямого аналога в VBA и требует стороннего API
End Sub
Импорт данных из CSV/TXT файла
Импортирует данные из удаленных файлов CSV/TXT в электронную таблицу.

Этот макрос не работает в мобильных версиях редакторов ONLYOFFICE (Р7).
JavaScript Р7

//ВНИМАНИЕ!: Не забудьте заменить `'ваш_адрес_файла'` 
//на фактический URL вашего CSV или TXT файла.
(function()
{
function LoadFile() {
$.ajax({
url: 'ваш_адрес_файла',
dataType: 'text',
}).done(successFunction);
}

function successFunction(data) {
var arrAllRows = data.split(/\r?\n|\r/);
var oWorksheet = Api.GetActiveSheet();

// Точка отсчета
var i = 1;
var j = 1;

for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
var rowCells = arrAllRows[singleRow].split(',');
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
oWorksheet.GetCells(i, j).SetValue(rowCells[rowCell]);
j = j + 1;
}
i = i + 1;
j = 1;
}
}

LoadFile();

let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
}, 60000);
})();
Используемые методы: GetActiveSheet, GetCells, SetValue
VBA MS Office

Sub example()
'' Этот пример не имеет прямого аналога на VBA, 
'' так как использует AJAX для загрузки данных из файла
End Sub
Пересчет значений рабочего листа
Повторно пересчитывает значения ячеек рабочего листа с интервалом в одну секунду.
JavaScript Р7

(function ()
{
let timerId = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
var oWorksheet = Api.GetActiveSheet();
oWorksheet.GetRange("F2").SetValue("Average");
oWorksheet.GetRange("G2").SetValue("=AVERAGE(B2:B80)");
}, 1000);
})();
Используемые методы: GetActiveSheet, GetRange, SetValue
VBA MS Office

Sub example()
  Application.OnTime Now + TimeValue("00:00:01"), "RecalculateValues"
End Sub

Sub RecalculateValues()
  Dim ws As Worksheet
  Set ws = ThisWorkbook.Sheets("Sheet1")
  
  ws.Calculate
  ws.Range("F2").Value = "Average"
  ws.Range("G2").Formula = "=AVERAGE(B2:B80)"
  
  ' 'Reschedule the recalculation
  Application.OnTime Now + TimeValue("00:00:01"), "RecalculateValues"
End Sub

Отображение всех строк и столбцов
Отображает все строки и столбцы в активной электронной таблице.
JavaScript Р7

(function()
{
var activeSheet = Api.GetActiveSheet();
var indexRowMax = 1048576;
var indexColMax = 16384; // Максимальное количество столбцов в Excel

// Отобразить все строки
for (let i = 0; i < indexRowMax; i++) {
activeSheet.GetRows(i + 1).SetHidden(false);
}

// Отобразить все столбцы
for (let j = 0; j < indexColMax; j++) {
activeSheet.GetColumns(j + 1).SetHidden(false);
}

var newRange = activeSheet.GetRange("A1");
newRange.SetValue("All the rows and columns are unhidden now");
})();
Используемые методы: GetActiveSheet, GetRows, SetHidden, GetColumns, GetRange, SetValue
VBA MS Office

Sub UnhideAllRowsAndColumns()
Cells.EntireRow.Hidden = False
Cells.EntireColumn.Hidden = False
Range("A1").Value = "All the rows and columns are unhidden now"
End Sub
Удаление фигур слайдов в презентации.
Удаляет фигуры слайдов в презентации.
JavaScript Р7

(function()
{
var oPresentation = Api.GetPresentation();
var slideCount = oPresentation.GetSlideCount(); // Получаем количество слайдов в презентации

for (let i = 0; i < slideCount; i++) {
var oSlide = oPresentation.GetSlideByIndex(i);
var aShapes = oSlide.GetAllShapes();

for (let j = 0; j < aShapes.length; j++) {
aShapes[j].Delete();
}
}
})();
Используемые методы: GetPresentation, GetSlideByIndex, GetAllShapes, GetSlideCount, Delete
VBA MS Office

Sub RemoveShapes()
Dim slide As slide
Dim shape As shape
For Each slide In ActivePresentation.Slides
For Each shape In slide.Shapes
shape.Delete
Next shape
Next slide
End Sub
Вставка уникального идентификатора
Вставляет уникальный идентификатор.
JavaScript Р7

(function()
{
function generate() {
let key = '';
const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 1; i <= 12; i++) {
let index = Math.floor(Math.random() * data.length);
key += data.charAt(index);
}
return key;
}

const id = generate();
const oDocument = Api.GetDocument();
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });
})();
Используемые методы: GetDocument, CreateParagraph, AddText, InsertContent
VBA MS Office

Sub InsertUniqueId()
Dim uniqueId As String
uniqueId = GenerateUniqueId()

Sub InsertUniqueId()
  Dim uniqueId As String
  uniqueId = GenerateUniqueId()
  
  Dim para As Paragraph
  Set para = ActiveDocument.Paragraphs.Add
  para.Range.Text = uniqueId
End Sub

Function GenerateUniqueId() As String
  Dim i As Integer
  Dim key As String
  Dim data As String
  
  data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
  
  For i = 1 To 12
    key = key & Mid(data, Int((Len(data) * Rnd) + 1), 1)
  Next i
  
  GenerateUniqueId = key
End Function
Завершение адресной информации
Дополняет основные данные адреса подробной адресной информацией и вставляет её в электронную таблицу.
JavaScript Р7

// Структура макроса
// 1. Считывание адреса (ячейка A2)
// 2. Отправка запроса
// 3. Получение ответа и создание объекта с подробной адресной информацией
// 4. Вставка подробной информации об адресе
// 5. Считывание адреса в следующей строке (ячейка A3) и отправка запроса

(function()
{
const API_KEY = 'yourAPIkey';
const ENDPOINT = 'https://api.geoapify.com/v1/geocode/search';
const oWorksheet = Api.GetActiveSheet();
let row = 2;
makeRequest(oWorksheet.GetRange(`A${row}`).GetText());

// Отправка запроса
function makeRequest(ADDRESS) {
if (ADDRESS === '') return;
$.ajax({
url: `${ENDPOINT}?text=${addressToRequest(ADDRESS)}&apiKey=${API_KEY}`,
dataType: 'json',
}).done(successFunction);
}

// Преобразование адреса для запроса (London, United Kingdom -> London%2C%20United%20Kingdom)
function addressToRequest(address) {
return address.replaceAll(' ', '%20').replaceAll(',', '%2C');
}

// Обработка ответа
function successFunction(response) {
const data = createAddressDetailsObject(response);
pasteAddressDetails(data);
reload();
}

// Создание объекта с подробной информацией об адресе, если адрес найден
function createAddressDetailsObject(response) {
if (response.features.length === 0) {
return { error: 'Address not found' };
}
console.log(response);
let data = {
country: response.features[0].properties.country,
county: response.features[0].properties.county,
city: response.features[0].properties.city,
post_code: response.features[0].properties.postcode,
full_address_line: response.features[0].properties.formatted
};
data = checkMissingData(data);
return data;
}

// Замена отсутствующих полей на '-'
function checkMissingData(data) {
Object.keys(data).forEach(key => {
if (data[key] === undefined) data[key] = '-';
});
return data;
}

// Вставка подробной информации об адресе
function pasteAddressDetails(data) {
const oRange = oWorksheet.GetRange(`B${row}:F${row}`);
if (data.error !== undefined) {
oRange.SetValue([[data.error]]);
} else {
oRange.SetValue([
[
data.country,
data.county,
data.city,
data.post_code,
data.full_address_line
]
]);
}
// Выполнение рекурсивно до тех пор, пока значение "Address" не станет пустым
row++;
makeRequest(oWorksheet.GetRange(`A${row}`).GetText());
}

// Обновление листа при изменениях
function reload() {
let reload = setInterval(function(){
Api.asc_calculate(Asc.c_oAscCalculateType.All);
});
}
})();
Используемые методы: GetActiveSheet, GetRange, SetValue, GetText
VBA MS Office

Sub example()
'' Этот пример не имеет прямого аналога на VBA
End Sub
Функция, получающая ячейку и отрисовывающая границу
Функция, получающая ячейку и отрисовывающая границу
JavaScript Р7

function aroundWhiteBorder(el) {
 el.SetBorders("Bottom", "Medium", Api.CreateColorFromRGB(255, 255, 255));
 el.SetBorders("Top", "Medium", Api.CreateColorFromRGB(255, 255, 255));
 el.SetBorders("Left", "Medium", Api.CreateColorFromRGB(255, 255, 255));
 el.SetBorders("Right", "Medium", Api.CreateColorFromRGB(255, 255, 255));
}
Функция, принимающая индекс столбца и выделяющая последнюю ячейку в нем
Выделение последней ячейки в столбце по его индексу
JavaScript Р7

//Перемещение в конец выбранного столбца
(function () 
{
 let activeSheet = Api.ActiveSheet; // Получение текущего листа
 let indexRowMin = 0; // Минимальный индекс строки
 let indexRowMax = 1048576; // Максимальный индекс строки

 let indexCol = 0; // Индекс нужного столбца

 let indexRow = indexRowMax;
 for (; indexRow >= indexRowMin; --indexRow) {
 let range = activeSheet.GetRangeByNumber(indexRow, indexCol);
 if (range.GetValue() && indexRow !== indexRowMax) {
 range = activeSheet.GetRangeByNumber(indexRow + 1, indexCol);
 range.Select();
 break;
 }
 }
})();
Помещение в документ диаграммы разного типа
Помещение в документ диаграммы разного типа
JavaScript Р7

//Создание диаграмм в текстовом редакторе
(function()
{
let oDocument = Api.GetDocument();
let oParagraph = oDocument.GetElement(0);

let sType = "bar3D" //Тип диаграммы / "bar" | "barStacked" | "barStackedPercent" | "bar3D" | "barStacked3D" | "barStackedPercent3D" | "barStackedPercent3DPerspective" | "horizontalBar" | "horizontalBarStacked" | "horizontalBarStackedPercent" | "horizontalBar3D" | "horizontalBarStacked3D" | "horizontalBarStackedPercent3D" | "lineNormal" | "lineStacked" | "lineStackedPercent" | "line3D" | "pie" | "pie3D" | "doughnut" | "scatter" | "stock" | "area" | "areaStacked" | "areaStackedPercent"

let aSeries = [[200, 240, 280],[250, 260, 280]] //Массив данных
let aSeriesNames = ["Projected Revenue", "Estimated Costs"]//Массив имён данных
let aCatNames = [2014, 2015, 2016] //Массив имён категорий
let width = 4051300 // Ширина
let height = 2347595 // Длина
let styleIndex = 24 // Индекс стиля диаграммы по спецификации OOXML(1 - 48)
let aNumFormats = ["0", "0.00"]

let oDrawing = Api.CreateChart(sType, aSeries, aSeriesNames, aCatNames, width, height, styleIndex, aNumFormats);
oDrawing.SetShowPointDataLabel(1, 1, false, false, true, false); // Создание объекта для отрисовки / Индекс значения из массива, над которым будет значение - int/ Индекс столбца, над которым будет значение - int/ Демонстрация имён таблицы - bool/ Демонстрация строк таблицы - bool/ Демонстрация значения данных диаграммы - bool/ Демонстрация процента значений данных - bool
oParagraph.AddDrawing(oDrawing);
})();
Выделение дубликатов разными цветами в выбранной области
Выделение дубликатов разными цветами в выбранной области
JavaScript Р7

(function () 
{
 let whiteFill = Api.CreateColorFromRGB(255, 255, 255);
 let uniqueColorIndex = 0; // Текущий индекс в цветовом диапазоне
 
 let uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
 Api.CreateColorFromRGB(204, 204, 255),
 Api.CreateColorFromRGB(0, 255, 0),
 Api.CreateColorFromRGB(0, 128, 128),
 Api.CreateColorFromRGB(192, 192, 192),
 Api.CreateColorFromRGB(255, 204, 0)]; // Массив с цветами

 function getColor() { // Функция, получающая цвета дубликатов 
 if (uniqueColorIndex === uniqueColors.length) {
 uniqueColorIndex = 0;a
 }
 return uniqueColors[uniqueColorIndex++];
 }

 let activeSheet = Api.ActiveSheet; // Получаем текущий лист
 let selection = activeSheet.Selection; // Получаем выделенную область
 let mapValues = {}; // Создаем пустой ассоциативный массив. В нем будет хранится информация о дубликатах.
 let arrRanges = []; //Массив всех клеток
 selection.ForEach(function (range) {
 
 let value = range.GetValue(); // Получаем значение из клеток
 if (!mapValues.hasOwnProperty(value)) {
 mapValues[value] = 0;
 }
 mapValues[value] += 1;
 arrRanges.push(range);
 });
 let value;
 let mapColors = {};
 //Окрашиваем дубликаты
 for (let i = 0; i < arrRanges.length; ++i) {
 value = arrRanges[i].GetValue();
 if (mapValues[value] > 1) {
 if (!mapColors.hasOwnProperty(value)) {
 mapColors[value] = getColor();
 }
 arrRanges[i].SetFillColor(mapColors[value]);
 } else {
 arrRanges[i].SetFillColor(whiteFill);
 }
 }
})();
Приведение ячейки к числовому типу
Приведение ячейки к числовому типу данных
JavaScript Р7

(function()
{
let oWorksheet = Api.GetActiveSheet();// Получаем текущий лист
let test = oWorksheet.Selection; // Объявляем переменную = ее к отбору по ячейке
test.ForEach(x => { // Создаем Цикл
let value = x.GetValue(); // Объявляем переменную = ее к замене
if(value === null || value === "" || !Number(value)){
return;
}
else{
value = Number(value); // переменная приравнивается к числовому значению
x.SetValue(value); // выводим переменную
x.SetNumberFormat("0.00"); // изменяем формат ячейки на числовой и форматируем под определенный вид числа
}
});
})();
Получение ячеек из диапазона
Получение ячеек из диапазона
JavaScript Р7

let oWorksheet = Api.GetActiveSheet(); //Получение текущего листа
let oRange = oWorksheet.GetRange("A1:C3"); //Получение диапазона ячеек
oRange.GetCells(2, 1).SetFillColor(Api.CreateColorFromRGB(255, 224, 204)); //Получение ячеек из диапазона
Получение текста из ячейки
Получение текста из ячейки
JavaScript Р7

let oWorksheet = Api.GetActiveSheet();
oWorksheet.GetRange("A1").SetValue("text1");
oWorksheet.GetRange("B1").SetValue("text2");
oWorksheet.GetRange("C1").SetValue("text3");
let oRange = oWorksheet.GetRange("A1:C1");
let sText = oRange.GetText();
oWorksheet.GetRange("A3").SetValue("Text from the cell A1: " + sText);
Значение из выбранной области в ячейку
Получение значения из выбранной области и вставка в нужную ячейку
JavaScript Р7

(function()
{
 let oWorksheet = Api.GetActiveSheet();// Получаем текущий лист
 let test = oWorksheet.Selection; // Объявляем переменную = ее к отбору по ячейке
 test.ForEach(x => {
 let value = x.GetValue();
 
 oWorksheet.GetRange("M1").SetValue(value);
 })
 
})();
Создание параграфа
Создание параграфа в документе
JavaScript Р7

(function()
{
let oDocument = Api.GetDocument(); //Подключаемся к документу
let oParagraph = Api.CreateParagraph(); //Создаем параграф
for(let i = 0; i< 100; i++){ //Цикл
oParagraph.AddText(`${i}`); //Добавляем с помощью AddText форматированною строку в параграф
oDocument.Push(oParagraph); //Добавляем параграф на страницу
}
})();
Цвета фона диапазона
Изменение цвета фона выбранного диапазона
JavaScript Р7

(function()
{
 Api.GetActiveSheet().GetRange("B3").SetFillColor(Api.CreateColorFromRGB(0, 0, 250));
 
})();
Жирность для диапазона
Установка жирности для выбранного диапазона
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("A2").SetBold(true);
})();
Цвет шрифта диапазона
Изменение цвета шрифта выбранного диапазона
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("B4").SetFontColor(Api.CreateColorFromRGB(255, 0, 0));
})();
Слияние диапазона ячеек
Слияние выбранного диапазона ячеек
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("A1:B3").Merge(true);
})();
Выделение диапазона для сортировки
Выделение диапазона ячеек для установления сортировки
JavaScript Р7

(function()
{
 Api.GetActiveSheet().FormatAsTable("A5:AU5");
 
})();
Разъединение диапазона
Разъединение выбранного диапазона ячеек
JavaScript Р7

(function()
{
Api.GetActiveSheet().GetRange("C3:D10").UnMerge();
})();
Номера строк из диапазона
Получение номеров строк из выделенной области
JavaScript Р7

let selection = Api.GetActiveSheet().Selection; // Помещаем выбранный фрагмент в переменную
let rowsArr = []; // Создаём массив строк
let startRow = selection.GetRow(); // Получаем стартовую строку

// Получаем номер строки каждого выделенного элемента
selection.ForEach((x) => {
 endRow = x.GetRow(); 
});

//Получаем массив с номерами всех выбранных строк
for (startRow; startRow < endRow + 2; startRow++) {
 rowsArr.push(startRow);
}
Ширина столбца
Установка ширины всего столбца
JavaScript Р7

(function()
{
Api.GetActiveSheet().SetColumnWidth(1, 25); //Индекс столбца, ширина
})();
Очистка диапазона
Очистка ячеек в диапазоне
JavaScript Р7

let area = secondWorksheet.GetRange("A21:F150"); // Сброс предыдущих значений

function aroundWhiteBorder(el) {
el.SetBorders("Bottom", "Medium", Api.CreateColorFromRGB(255, 255, 255));
el.SetBorders("Top", "Medium", Api.CreateColorFromRGB(255, 255, 255));
el.SetBorders("Left", "Medium", Api.CreateColorFromRGB(255, 255, 255));
el.SetBorders("Right", "Medium", Api.CreateColorFromRGB(255, 255, 255));
}

area.ForEach((x) => {
x.SetValue("");
aroundWhiteBorder(x);
});
Шрифт всей страницы
Установление нужного шрифта для всех элементов страницы
JavaScript Р7

(function()
{
 let oDoc = Api.GetDocument(); // Получаем документ
 let elcount = oDoc.GetElementsCount(); // Получаем количество элементов в документе
 for(let i = 0; i < elcount; i++){ // Перебираем циклом все элементы
 let e = oDoc.GetElement(i); 
 let oTextPr = el.GetTextPr();
 oTextPr.SetFontFamily("Comic Sans MS"); // Прописываем название нужного шрифта
 e.SetTextPr(oTextPr);// Устанавливаем нужный шрифт
 }
})();