如何从部署为Web应用的Google应用脚本中打开电子表格

时间:2016-03-12 06:09:04

标签: javascript google-apps-script

我有一个Google Apps脚本,可以打开并处理现有的电子表格,并将数据写入JSON。这对我来说非常适用于Google脚本编辑器,但当我将其部署为网络应用时,我无法打开电子表格。

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

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

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

我"发布>部署为Web应用程序"使用"执行应用程序:我,"并给予必要的许可。

当我"测试网络应用程序以获取最新代码"我显示了HTML表单。当我点击" OK"在表单上,​​我会在打开电子表格之前看到第一个警告""

但在打开电子表格后,我从未看到第二个警告""在尝试打开电子表格时,该页面会重定向到空白userCodeAppPanel网址,不再继续使用。

我猜测它与身份验证有关???任何线索都非常感激!

执行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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您可以使用window.open()方法在新窗口中打开电子表格。需要更改提交按钮,以便在单击按钮后不会在Web应用程序中显示空白屏幕。

<!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>