【问题标题】:How to open spreadsheet from Google app script deployed as web app如何从部署为网络应用程序的 Google 应用程序脚本打开电子表格
【发布时间】:2025-11-23 02:30:01
【问题描述】:

我有一个 Google Apps 脚本,它可以打开和处理现有的电子表格并将数据写入 JSON。这在 Google 脚本编辑器中对我来说很好用,但是当我将其部署为 Web 应用程序时,我无法让它打开电子表格。

为了说明我创建了这个简单的测试版本:

  • Google spreadsheet,“互联网上的任何人都可以找到和编辑”(尽管我需要对真实的电子表格进行更严格的控制)。
  • 使用 doGet 部署 HTML 文件的 Google 脚本(见下文)。
  • 一个 HTML 文件(见下文),其中包含用于打开电子表格的表单和 Javascript。

脚本和 HTML 文件保存在一个 Google App 脚本项目中。

我“发布 > 部署为 Web 应用程序”和“执行应用程序为:我”,并授予它必要的权限。

当我“为您的最新代码测试网络应用程序”时,我会显示 HTML 表单。当我点击表单上的“确定”时,我会在“打开电子表格之前”看到第一个警报。

但我从未在“打开电子表格后”看到第二个警报。在尝试打开电子表格时,页面会重定向到一个空白的 userCodeAppPanel URL 并且不再继续。

我猜这与身份验证有关???任何线索都非常感谢!

doGet Google 应用脚本:

function doGet() {
    return HtmlService.createHtmlOutputFromFile("opensheet.html")
        .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

HTML 表单:

<!DOCTYPE html>
<html>

<head>
    <base target="_top">
    <script>
        function getData() {
            var sheetFileId = "1feVgACmd5_g9II2ll_1u7AVt8jIVg2LbKp13k8UQw6w";

            alert("before opening spreadsheet");
            var sheetFile = SpreadsheetApp.openById(sheetFileId);
            alert("after opening spreadsheet");
        }

    </script>

</head>

<body>
    <p>Update web app from spreadsheet?</p>

    <form onsubmit='getData()'>
        <input type='submit' value='Go'>
    </form>
</body>

</html>

【问题讨论】:

    标签: javascript google-apps-script


    【解决方案1】:

    您可以使用window.open() 方法在新窗口中打开电子表格。提交按钮需要改一下,以免点击按钮后网页应用出现黑屏。

    <!DOCTYPE html>
    <html>
    
    <head>
        <base target="_top">
        <script>
            function getData() {
    
                alert("before opening spreadsheet");
                window.open("https://docs.google.com/spreadsheets/d/1feVgACmd5_g9II2ll_1u7AVt8jIVg2LbKp13k8UQw6w/edit#gid=0","_blank");
    
                alert("after opening spreadsheet");
            }
    
        </script>
    
    </head>
    
    <body>
        <p>Update web app from spreadsheet?</p>
    
        <form>
            <input type='button' onmouseup="getData()" value='Go'>
        </form>
    </body>
    
    </html>
    

    【讨论】:

      最近更新 更多