如何将宏应用于 Google 表格中一个电子表格中的所有表格

Posted

技术标签:

【中文标题】如何将宏应用于 Google 表格中一个电子表格中的所有表格【英文标题】:How to apply a macro to all sheets in one spreadsheet in Google Sheets 【发布时间】:2019-03-17 21:39:31 【问题描述】:

我在 google 表格中为我的电子表格中的一张表格记录了宏。我想编辑脚本,使其适用于电子表格中的所有工作表(这样我就不必分别在每个工作表中运行记录的宏)。我看过有关如何在 Excel 中执行此操作的文章,但在 Google 表格中是否可行?

【问题讨论】:

分享你的宏 感谢您回答我的问题,虽然我不太明白您的回答。我认为共享只适用于其他用户。您如何与您自己的工作簿中的其他选项卡/电子表格共享内容(在 Google 表格中)。 【参考方案1】:

您确定它不适用于其他工作表吗?录制的宏通常使用活动工作表而不是命名工作表。

【讨论】:

它的工作原理是我每次都必须运行它。这个特定的工作簿中有很多电子表格。我希望将宏设置为自动在工作簿(谷歌工作表)中的每个工作表中运行,而无需“手动”运行。 函数 Subjectsthirdterm() var spreadsheet = SpreadsheetApp.getActive();电子表格.getRange('A54').activate();电子表格.getCurrentCell().setValue('数学 3');电子表格.getRange('A55:A58').activate();电子表格.getRange('A54').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); ;【参考方案2】:

虽然我迟到了 9 个月才回答这个问题,但这里有一个对您的问题的有效答案,其中有一个示例,可以使用另一个名为 ClearActiveSheet 的函数清除所有可见工作表。如果有人仍在寻找如何做到这一点,这应该给出一个想法。

function ClearActiveSheet() 

  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();

  sheet.getRange('A1').activate();  
  sheet.clear();  
;

function ClearAllVisibleSheets() 
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheets.forEach(function(sheet)     
    //You would need to make this the current active sheet, so that you can call the ClearActiveSheet function that works on active sheet
    sheet.activate()

    // Now since you have this sheet activated, you can call the function to clear the active sheet
    ClearActiveSheet();   
  );
;

从 Tools-> ScriptsEditor -> SelectFunction (ClearAllVisibleSheets) 中选择 GoogleSpredsheets 中的 ClearAllVisibleSheets 函数并运行/或调试,您将看到它完成了这项工作。

P.S:如果这满足您的需求,请记得点赞并接受它作为答案:)。

【讨论】:

以上是关于如何将宏应用于 Google 表格中一个电子表格中的所有表格的主要内容,如果未能解决你的问题,请参考以下文章

如何将范围传递给 Google 电子表格中的自定义函数?

在Google电子表格小工具中,如何写入电子表格?

如何从Google表格电子表格中删除绑定脚本?

如何使用 API 格式化 Google 表格电子表格单元格?

如何在 Google 电子表格中使用日期添加功能?

Google表格:自动将公式应用于顶部添加的新行