是否可以通过一次致电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();
答案 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});
如果这些方法都不对您有用,那么也许包括您在问题中的意图将有助于社区找到您的答案。