【问题标题】:Run a Google Script on a Spreadsheet in Drive using Drive API使用 Drive API 在 Drive 中的电子表格上运行 Google 脚本
【发布时间】:2015-10-20 03:37:20
【问题描述】:

我有一个网络应用程序,大多数新用户都从另一个平台导入主机数据。另一个平台将数据导出为 Excel 电子表格。我需要清理电子表格并将其导出为 JSON(或 csv),以便将其导入我的应用程序。

为此,我创建了一项服务,用户可以将 Excel 电子表格上传到我的云端硬盘,然后将其转换为 Google 电子表格。我编写了一个名为 Cleanup.gc 的 Google 脚本,它也驻留在我的云端硬盘中,它会清理数据并对其执行一些操作。

到目前为止,我可以使用 Drive API 自动上传用户电子表格。上传完成后,它会发回一个 ID,从中可以识别电子表格。

此时我想做的是通过适当的 API 调用 Cleanup.gc 脚本,以便在新上传的电子表格上执行它。完成后,我将继续将数据导入我的应用程序。

我浏览了很多页的 Google API 文档,但我没有找到任何符合我描述的内容。这个功能存在吗?如果没有,是否有一种智能方法可以使用 Google Script 触发器来完成同样的事情?

这是我目前拥有的代码,它在用户的浏览器中运行:

var token; //pre-generated Google Auth token passed from server
var xhr = new XMLHttpRequest();
        xhr.open("POST", 'https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true', true);
        xhr.setRequestHeader('Authorization', 'Bearer ' + token);
        xhr.setRequestHeader('Content-Type', 'application/vnd.ms-excel');
        xhr.onload = function() {
            if (xhr.status === 200) {
                var id = xhr.response.id;
                // NOW I NEED TO CALL MY .gc SCRIPT ON THIS ID
            };
        };

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

    我终于找到了一个解决方案,隐藏在应用程序脚本 API 文档的最后一部分“REST 执行 API”下。

    解决方法是使用:

    POST https://script.googleapis.com/v1/scripts/{scriptId}:run
    

    您可以在 POST 请求正文的参数数组中传递工作表的 id。 这是page in the documentation 的链接。

    更新

    还有another link that describes the same thing。请注意,您必须先将脚本作为 API 可执行文件从 Google Drive 中发布,然后才能使用 API 调用它。

    【讨论】:

    • 没有 oauth 的更简单的方法是将其他脚本发布为匿名服务
    猜你喜欢
    • 2012-09-26
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2012-12-16
    相关资源
    最近更新 更多