【问题标题】:Open Google Sheet on Client side using Google Apps Script使用 Google Apps 脚本在客户端打开 Google Sheet
【发布时间】:2017-12-14 13:35:28
【问题描述】:

我正在尝试从现有的 GoogleSheet 创建一个图像按钮并附加一个小脚本,该脚本将使用目标 Googlesheet 的 ID 打开另一个 GoogleSheet。我已经完成了图像按钮,并且知道如何将函数脚本附加到它。

我尝试了以下方法:

function Open2017File() {
  var ss = SpreadsheetApp.OpenById("1mTz8YaH_lu6R3icbSCpgx0Oy-AB4a98thDPP0m1xNhU");
  Logger.log(ss.getName());
}

但是在进一步阅读后我发现这只会打开服务器端脚本的文件...

有人可以告诉我在客户端打开 GoogleSheet 的等效命令吗? ?

提前致谢

【问题讨论】:

  • 没有命令。这需要一个您可以访问的网址。因此,您帐户中的某些内容或与您共享的内容。与访问您的帐户并打开文件没有太大区别。
  • 我有一个 GoogleDoc URL ...那么我可以使用什么代码来打开文档? (记得我想把它附加到按钮图像上。谢谢
  • 我只会将 URL 放在我的一个书签上。无需编码。
  • 没那么简单......我有 50 多个用户,我宁愿给用户一个按钮,而不是通过电子邮件发送 URL。发送/共享 1 个文档,这会导致第 2 个文档是用户导航的一种简洁方式。不用担心。谢谢

标签: google-apps-script google-docs google-apps


【解决方案1】:

您可以使用此代码打开一个新工作表:

function openNewSheet() {
  var spreadsheetId = YOUR_ID_HERE;
  var url = "https://docs.google.com/spreadsheets/d/"+spreadsheetId;
  var html = "<script>window.open('" + url + "');google.script.host.close();</script>";
  var userInterface = HtmlService.createHtmlOutput(html);
   SpreadsheetApp.getUi().showModalDialog(userInterface, "Open Sheet");
  }

我从这个帖子中得到这个:https://www.youtube.com/watch?v=2y7Y5hwmPc4

【讨论】:

    【解决方案2】:

    您可以通过使用内置的 HtmlService 和 scriptlet 来实现这一点。转到“文件”-“新建”-“Html 文件”并将 HTML 页面添加到您的项目中。我称我的“侧边栏”。 '!= ?>' 符号用于输出由 '.gs' 代码传递给 html 的变量。感叹号“!”表示这些符号之间的任何内容都将直接打印到页面上。

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
        <a href="<?!= spreadsheet.url ?>"> Open spreadsheet <?!= spreadsheet.name ?> </a>
      </body>
    </html>
    

    下面的代码将自定义菜单添加到电子表格 - 单击“显示侧边栏”菜单选项会执行“showSidebar()”功能。在此函数中,您应该首先获取侧边栏的 HtmlTemplate 类的实例。请注意,此时它只是一个 JS 对象,我们可以为其定义自定义属性。这就是小脚本发挥作用的地方。

    下一步是通过调用“getSpreadsheet(id)”函数获取第二张工作表的 url 和文件名,并将变量传递给 HtmlTemplate。

    最后,在模板上调用 evaluate() 方法会将模板转换为 HtmlOutput 对象,以供 showSidebar() 方法使用。我们传递给模板的属性将被打印到生成的 html 中:

    var ui = SpreadsheetApp.getUi();
    var spreadsheetId = YOUR_ID_HERE;
    
    function onOpen() {
    
    ui.createMenu('User options').addItem('Show sidebar', 'showSidebar').addToUi();
    
    }
    
    function showSidebar() {
    
     var template = HtmlService.createTemplateFromFile('sidebar');
     var spreadsheet = getSpreadsheet(spreadsheetId);
    
      template.spreadsheet = {      //passing data to the template
        url: spreadsheet.getUrl(), 
        name: spreadsheet.getName()
      };
    
    
    
    
       ui.showSidebar(template.evaluate()); //evaluate runs the scriptlets 
                                           //and creates the fully-formed DOM tree
    
    }
    
    function getSpreadsheet(id) {
    
    
      return SpreadsheetApp.openById(id);
    
    
    }
    

    当然,您可以通过将“showSidebar”功能分配给电子表格内的按钮来创建快捷方式,以便于访问。

    【讨论】:

      【解决方案3】:

      因为无法切换到另一个工作表(选项卡),所以我找到了解决方法。

      只需隐藏一张或多张工作表,直到只有所需的工作表。

      然后通过未隐藏的床单返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 2023-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多