所以我以前做的是当我创建函数来调用它们时,我将使变量具有相同的值,即var sheet = SpreadsheetApp.openById('id').getActiveSheet();
,有人建议/要求我将工作表另存为命名属性,然后继续在函数中调用它,而不是像使用相同的值一样制作100个相同的变量。
我在YouTube和类似内容上观看了视频-试试了:
var documentProperties = PropertiesService.getDocumentProperties();
var sheetID = "1dRAXZRHMgfR_oX1ZF1RFeonUi7ZPk_wbRf7Jx0UvCjE";
documentProperties.setProperties('spreadsheetID', sheetID);
var sheet = SpreadsheetApp.openById(documentProperties.getProperty(spreadsheetID)).getActiveSheet();
var logsheet = SpreadsheetApp.openById(documentProperties.getProperty(spreadsheetID)).getSheetByName("Log");
documentProperties.setProperties('timesheet', sheet);
documentProperties.setProperties('logsheet',log);
因此,我需要能够在所有其他函数中调用变量工作表和日志工作表-如果我在函数onOpen()
中拥有这些工作表,那么仅使用documentProperties.getProperties(timesheet)
就可以做到这一点,或者documentProperties(logsheet)
?
答案 0 :(得分:0)
简短的回答是“否”,您不能将它们作为函数documentProperties(logsheet)
来调用。正确的方法是documentProperties.getProperty('logsheet')
。
您可以将它们用作某种全局变量,但是使用的方法不正确:
var documentProperties = PropertiesService.getDocumentProperties();
var spreadsheetID = '1dRAXZRHMgfR_oX1ZF1RFeonUi7ZPk_wbRf7Jx0UvCjE'
documentProperties.setProperty('spreadsheetID', spreadsheetID);
var sheet = SpreadsheetApp.openById(documentProperties.getProperty('spreadsheetID')).getActiveSheet();
var logsheet = SpreadsheetApp.openById(documentProperties.getProperty('spreadsheetID')).getSheetByName("Sheet1");
documentProperties.setProperty('timesheet', sheet);
documentProperties.setProperty('logsheet',log);
SetProperties()(用于复数形式)是用于设置多个属性:
documentProperties.setProperties{timesheet: sheet, logsheet: log};
请记住Properties cannot be shared between scripts,因此您只能在同一项目的脚本中使用它们,但是可以,您可以在onOpen()
函数中将它们用作任何常规变量。为确保获得所需的值,请在代码末尾放置一个Logger.log(documentProperties.getProperties())
。