物业服务如何工作?

时间:2019-07-12 02:08:05

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

所以我以前做的是当我创建函数来调用它们时,我将使变量具有相同的值,即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)

1 个答案:

答案 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())

相关问题