Google 表格 - Google 应用程序脚本 - 获取完整 sheet 数据和样式的方法

Google Sheets - Google app scripts - way to get full sheet data plus styling

有没有办法在对 Google 的一次调用中获取所有 sheet 值、函数和样式等?

我找到的唯一方法是分别为活动范围调用每种样式。

如果可能的话,我想一次性获得 sheet 的所有 data/formulas/styling 等。

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();

我不确定您的最终目标是什么,但您总是会使用 sheet class..

中的 copyTo() 方法
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];

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

这将为您提供 sheet 的精确副本,所有格式和数据都完好无损。当您调用 SpreadsheetApp.getActiveSheet() 时返回的 'Sheet' 对象确实包含所有 data/formulas/styling,所以在某种程度上,答案是肯定的。一个电话即可搞定。不幸的是,要使用该数据,您必须使用已列出的 'Sheet' 对象中包含的各个方法。如果它只是您需要的 sheet 的副本,我还挖掘了 'Spreadsheet' class 的一部分的 insertSheet() 方法。看起来像这样..

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

如果这些方法都不适合您,也许在问题中包含您的意图将有助于社区找到您的答案。

您可以使用 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(...) returns a Spreadsheet Resource object 由工作表 API 定义。