【问题标题】:Apps script sheets, bring active sheet into view应用程序脚本表,将活动表显示在视图中
【发布时间】:2015-05-18 22:57:00
【问题描述】:

感谢 stackoverflow 和 google+ 贡献者的帮助,我现在有了一个工作表,俱乐部成员可以使用该工作表将俱乐部日历中一系列日期的项目导出到 Google 工作表电子表格中,格式化为打印为 PDF 并通过电子邮件发送给其他人成员。

我希望脚本弹出一个对话框,以便用户可以设置要导出的日期范围,但我无法让新的 HTML 服务显示日期选择器(不显示任何内容)。所以我使用了一个表单,通讯编辑器可以在其中输入起始月份和年份以及结束月份。我设置了一个触发器,以便在收到表单响应时运行一个脚本,获取项目并将它们格式化到电子表格的另一张表中。

但是当一切都结束时,显示的是表单响应表,而不是包含格式化结果的表。

我不知道如何将结果表而不是表单响应表放在前面。

有什么想法吗?

这是我在脚本结尾处的内容:

var sheet = ss.getSheetByName("Form Responses 1");
sheet.activate(); 
sheet.setActiveSelection("A1"); 
var sheet = ss.getSheetByName("CalData"); 
sheet.activate(); 
sheet.setActiveSelection("A1");

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您有一个重复的变量分配给相同的变量名 (sheet)。您可以重复使用变量名,但不要将“var”放在对同一变量名的任何第二次赋值之前。

    在我最初的回答中,我建议使用activate 方法,因为您没有提供任何代码。现在您提供的代码表明您已经使用了activate() 方法,但它不起作用。

    【讨论】:

    • 谢谢桑迪的回答,但我已经在脚本中有这个,而且它似乎没有做任何事情——表单响应表仍在视图中。这是我在脚本末尾的内容: var sheet = ss.getSheetByName("Form Responses 1"); sheet.activate(); sheet.setActiveSelection("A1"); var sheet = ss.getSheetByName("CalData"); sheet.activate(); sheet.setActiveSelection("A1");
    • 请将该代码添加到您的问题中。使用Logger.log('sheet: ' + sheet)debugger,以确保您确实获得了工作表。如果名称 Form Responses 1 实际上是 Form Responses1,没有空格,那么您不会得到床单。可能就是这么简单。
    • 为什么要在激活 CalData 之前激活表单响应 1?你应该删除 - var sheet = ss.getSheetByName("Form Responses 1"); sheet.activate(); sheet.setActiveSelection("A1");
    • 工作表的名称是正确的,所以这不是问题。我在 google+ 上使用 setActiveSheet 获得了帮助。 developers.google.com/apps-script/reference/spreadsheet/…。将工作表显示在视图中是整个电子表格的功能,而不是单个工作表的功能。如果我从脚本编辑器运行它,则此方法有效,但如果用户填写表单则无效。但是,我确实发现,如果我给用户一个指向结果表而不是整个电子表格的链接,那么结果表就会显示在最后。所以我已经解决了这个问题。感谢您的帮助。
    • ScampMichael,我这样做是为了尝试戳穿系统并使其显示我想要的内容,但没有任何效果。正如我在几分钟前的评论中所描述的那样,我找到了使用 setActiveSheet 的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多