Google Sheets - Сценарии приложения Google - способ получить полные данные листа плюс стиль - PullRequest
0 голосов
/ 21 февраля 2019

Есть ли способ получить все значения листа, функции, стили и т. Д. За один вызов в Google?

Единственный способ, который я нашел, - это вызывать каждый стиль отдельно для активного диапазона.

Если возможно, я бы хотел получить все данные / формулы / стили и т. Д. Для листа за один раз.

var sheet = SpreadsheetApp.getActiveSheet();
var activeRange = sheet.getActiveRange();
var backgrounds = activeRange.getBackgrounds();
var fontSizes = activeRange.getFontSizes();
var colours = activeRange.getFontColors();
var alignments = activeRange.getHorizontalAlignments();  
var values = activeRange.getValues();
var formulas = activeRange.getFormulas();
var vAlignments = activeRange.getVerticalAlignments();

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вы можете получить полные данные электронной таблицы, используя Advanced Sheet Service следующим образом:

var ssID = "[YOUR_SPREADSHEET_ID]";
var fields = "developerMetadata,namedRanges,properties,sheets,spreadsheetId,spreadsheetUrl";

var fullSpreadsheetData = Sheets.Spreadsheets.get(ssId, {"fields":fields});

Вызов Sheets.Spreadsheets.get(...) возвращает объект ресурса электронной таблицы какопределяется API листов.

0 голосов
/ 21 февраля 2019

Я не уверен, каковы ваши конечные цели здесь, но вы всегда будете использовать метод copyTo () из класса листа.

var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];

var destination = SpreadsheetApp.openById('ID_GOES HERE');
sheet.copyTo(destination);

Это даст вам точную копию вашего листасо всем форматированием и данными в целости.Объект «Лист», который вы возвращаете при вызове SpreadsheetApp.getActiveSheet(), содержит все данные / формулы / стили, поэтому, в некотором смысле, ответ - да.Вы можете получить все это одним звонком.К сожалению, чтобы использовать эти данные, вы должны использовать отдельные методы, содержащиеся в объекте «Лист», который вы уже перечислили.Если вам нужна просто копия листа, я также копаю метод insertSheet(), который является частью класса «Электронная таблица».Это выглядело бы следующим образом ..

var ss = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = ss.getSheetByName('Sales');
ss.insertSheet(1, {template: templateSheet});

Если ни один из этих методов не работает для вас, возможно, включение ваших намерений в вопрос поможет сообществу найти вам ответ.

...