Google apps script 谷歌应用程序脚本,如何创建一个事件对象脚本,当您更改工作表名称时激活?

Google apps script 谷歌应用程序脚本,如何创建一个事件对象脚本,当您更改工作表名称时激活?,google-apps-script,google-sheets,synchronization,Google Apps Script,Google Sheets,Synchronization,我试图创建一个连接两个工作表的OneEdit类型脚本,这样,如果其中一个工作表的名称发生更改,另一个工作表的名称也会发生更改。到目前为止,我的想法是在if-else操作中使用“oldValue”与“value”进行比较,但我想不出一种方法让它工作 如果做不到那就好了,但如果可以的话,我将非常感激 提前谢谢 :)这里有一个简单的onChange函数,当用户更改工作表名称时,该函数将获取旧工作表名称和新工作表名称。 第一个函数刚刚设置了。运行它只是为了创建“oshts”属性 function set

我试图创建一个连接两个工作表的OneEdit类型脚本,这样,如果其中一个工作表的名称发生更改,另一个工作表的名称也会发生更改。到目前为止,我的想法是在if-else操作中使用“oldValue”与“value”进行比较,但我想不出一种方法让它工作

如果做不到那就好了,但如果可以的话,我将非常感激

提前谢谢


:)

这里有一个简单的onChange函数,当用户更改工作表名称时,该函数将获取旧工作表名称和新工作表名称。

第一个函数刚刚设置了。运行它只是为了创建“oshts”属性

function setupPropertyoshts() {
  PropertiesService.getDocumentProperties().setProperty('oshts', SpreadsheetApp.getActive().getSheets().map(function(sheet){return sheet.getName()}).join(','));
  Logger.log(PropertiesService.getDocumentProperties().getProperty('oshts'));
}
这是附加到onChange的函数。我在脚本中留下了用于调试它的所有Logger.log和toast

function sheetNameChange(e) {
  var cshts=e.source.getSheets().map(function(sheet){return sheet.getName()});
  var oshts=PropertiesService.getDocumentProperties().getProperty('oshts').split(',');
  Logger.log('cshts: %s oshts: %s',cshts,oshts);
  var oldName=oshts[cshts.indexOf(e.source.getActiveSheet().getName())];
  Logger.log('oldName; %s newName: %s',oldName,e.source.getActiveSheet().getName());
  e.source.toast(Utilities.formatString('The old name was %s. The new name is %s.',oldName,e.source.getActiveSheet().getName()));
  PropertiesService.getDocumentProperties().setProperty('oshts',cshts.join(','));
}
其他参考资料

  • 考虑使用开发者Meta DATA来响应表单名称的变化。@库珀再次问好,“换位符”是如何重命名一张表,我尝试使用“Logger-log(EnguteType)()。”但我没有得到任何日志,我只是完全错了一个错误的树?有趣的是,我刚才看了那个,它只是“另一个”。信息量不大。但是我添加了一个函数,可以帮助您开始满足您的特定需求。Cooper我觉得您帮了我很多,我不知道如何说“谢谢”,我已经测试了代码,所有的功能都很好,我现在还不完全理解,但我要走了,做一些研究来解决这个问题。:)那是个好主意。当我在编程时遇到一个问题,我通常会开始考虑开发一个我自己的最小完整且可验证的问题。有时这可以帮助我解决问题,有时这会成为这个网站的一个问题。无论如何,花点时间仔细阅读这篇文章