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

时间:2019-02-21 15:00:54

标签: google-apps-script google-sheets google-sheets-api

是否可以通过一次致电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 :(得分:2)

您可以使用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(...)的调用将返回Sheets API定义的Spreadsheet Resource object

答案 1 :(得分:1)

我不确定您的最终目标是什么,但是您将始终使用工作表类中的copyTo()方法。

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

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

这将为您提供工作表的准确副本,同时保留所有格式和数据。调用SpreadsheetApp.getActiveSheet()时返回的“ Sheet”对象确实包含所有数据/公式/样式,因此在某种程度上,答案是肯定的。一键即可完成所有操作。不幸的是,要使用该数据,您必须使用已列出的“ Sheet”对象中包含的各个方法。如果它只是您需要的工作表的副本,我还将挖掘{Spreadsheet”类中的insertSheet()方法。看起来像这样。

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

如果这些方法都不对您有用,那么也许包括您在问题中的意图将有助于社区找到您的答案。