【问题标题】:Script to the active Sheet on Google Sheet脚本到 Google 工作表上的活动工作表
【发布时间】:2021-07-26 14:00:59
【问题描述】:

我有这个用于 google sheet 的脚本

var spreadsheet = SpreadsheetApp.getActive();
 spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Base'), true);
 spreadsheet.getCurrentCell().offset(5, 5, 97, 2).activate();
 spreadsheet.setActiveSheet(spreadsheet.getSheetByName('1'), true);
 spreadsheet.getCurrentCell().offset(-99, 0).activate();
 spreadsheet.getRange('Base!F6:G102').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

但我希望它在活动工作表上运行,而不是使用 getSheetByName。 我在 VBA 中做了同样的宏,这就是我希望它在谷歌表上的样子。

Sheets("Base").Range("A6:E102").Copy Destination:=Range("A5")

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    不要使用getSheetByName,而是使用getActiveSheet

    var activeSheet = spreadsheet.getActiveSheet();
    

    并将其分配给变量以便于访问。

    代码:

    function copyData() {
      var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
      var baseSheet = spreadsheet.getSheetByName("Base");
      var activeSheet = spreadsheet.getActiveSheet();
      baseSheet.getRange("A6:E102").copyTo(activeSheet.getRange("A5"));
    }
    
    function onOpen() {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu('Custom Menu')
        .addItem('Copy A6:E102 of "Base" sheet to A5 of current sheet', 'copyData')
        .addToUi();
    }
    

    样本数据:

    输出:

    注意:

    • 我添加了一个自定义菜单以便于访问。保存脚本后,您只需刷新选项卡即可显示自定义菜单。
    • 转到所需的工作表并单击自定义菜单将值粘贴到那里。

    参考:

    【讨论】:

    • 所以这一行 spreadsheet.setActiveSheet(spreadsheet.getSheetByName('1'), true);应该看起来像这个电子表格.setActiveSheet(spreadsheet..getActiveSheet(), true); ?
    • 嗨@TTiM3R,setActiveSheet 使特定工作表处于活动状态。您不需要在 getActiveSheet 上使用它,因为它只是简单地返回活动工作表。这就像将活动工作表设置为活动工作表一样,所以它是无用的。更好地解释该 excel 宏的脚本行为,或者至少显示它在示例数据和输出方面的作用,以便我了解您想要做得更好。简单的线条表明没有任何解释很可能会给你带来模糊的答案。
    • 嗨@NaziA 我想完全按照 VBA 行所做的,但在 google Sheet 上。因此,从基本工作表中选择一系列单元格并将其粘贴到我的活动工作表中,但在不同的单元格范围内(但大小相同)。
    • 嗨@TTiM3R,我已经修改了我的答案。请参阅上面的更新答案。添加自定义菜单,方便访问创建的功能。
    • 是的,谢谢,它运行良好。我想知道您是否可以从脚本编辑器分配一个快捷键(CTRL+SHIFT+ALT+NUMBER),或者您必须录制一个空白宏为其分配一个快捷方式,然后编辑您创建的宏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2019-09-22
    相关资源
    最近更新 更多