使用Drive API在云端硬盘中的电子表格上运行Google脚本

时间:2015-10-20 03:37:21

标签: google-drive-api

我有一个网络应用程序,大多数新用户从其他平台导入主机数据。另一个平台将数据导出为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
            };
        };

1 个答案:

答案 0 :(得分:0)

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

解决方案是使用:

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

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

更新

another link that describes the same thing。请注意,您必须先在Google云端硬盘中将脚本发布为API可执行文件,然后才能使用API​​调用它。