0

我正在开发一个使用 html 服务的 Google Apps 脚本。我想为用户提供一个文件选择器,以便他们可以从他们的 Google 驱动器中选择一个文件。

我见过两种不同的 API 似乎可以做到这一点,Google PickerGoogle DocsListDialog

我无法让任何一个工作。我已经完全复制了两个文档页面中的示例代码,但是我无法让选择器出现。

Google Picker 我尝试在我的 html 页面中从 javascript 调用。我从文档页面复制了 Hello World 示例。什么都没有出现。

然后我在脚本本身中尝试了 DocsListDialog(通过使用 google.script 在 html 中按下按钮调用)。这次也没有出现任何内容 - 尽管示例代码将选择器返回给 doGet 函数 - 它也返回它。因为我使用的是 html 服务,所以我的 doGet 返回了 html。

无论如何,我只想将一个简单的文档选择器集成到我的应用程序中。我可以剪切和粘贴然后修改的示例代码将非常有帮助,因为我可能可以从那里弄清楚。

谢谢。


这可能有助于解释我正在尝试做的事情,因为有人可能有不同的方法建议。

我是一所学校的老师和一个业余程序员。我们在学校使用谷歌网站和谷歌驱动器。我想在内部网站页面上创建一个应用程序,教师可以使用它来自动复制模板文件并与全班共享。

我知道如何做到这一点的唯一方法是创建一个使用 html 服务的谷歌应用程序脚本。然后我可以结合 html 和 javascript 创建一个易于使用的表单来从老师那里获取信息。我知道如何让脚本获取文件、复制它、添加查看器或编辑器等。

现在,我知道如何让老师识别他们的文件的唯一方法是输入文件 ID。我学校的很多老师都不太精通计算机,我想让这部分更简单,因为解释如何识别和复制网址中的 id 并不容易。

我看到了一些对谷歌文档选择器的引用,如果有某种方法可以使它与我需要的东西一起工作(或其他一些简单的方法来完成我需要的东西),这似乎是一种很好的方法。

任何有用的建议将不胜感激。

4

2 回答 2

2

您实际上可以让它在 HTML 服务中工作。就是这样...

创建一个新的应用程序脚本项目并在项目中制作以下文件:

代码.gs 文件:

function doGet() {
return HtmlService.createTemplateFromFile('index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
.setTitle('Picker');
}

index.html 文件:

<script type="text/javascript">
// Use the Google Loader script to load the google.picker script.
google.setOnLoadCallback(createPicker);
google.load('picker', '1');
// picker info here
function createPicker() {
// Create default view to folders
var view = new google.picker.View(google.picker.ViewId.FOLDERS);
// Use DocsUploadView to upload documents to Google Drive.
var uploadView = new google.picker.DocsUploadView();
var picker = new google.picker.PickerBuilder().
addView(view).
addView(uploadView).
setAppId('YOUR APP ID').
setCallback(pickerCallback).
build();
picker.setVisible(true);
}
// callback implementation.
function pickerCallback(data) {
    if (data.action == google.picker.Action.PICKED) {
        var fileId = data.docs[0].id;
        alert('The user selected: ' + fileId);
    }
}
</script>
  1. 保存项目并发布并运行。

  2. 在 pickerCallback(data) 函数中包含应用程序脚本子例程。

    改编自:Google Apps Developer's Blog Post

于 2014-05-22T02:30:05.747 回答
0

DocsListDialog 显然是 uiservices 而不是 html 服务的一部分。你为什么期望它在那里工作?文件选择器还使用不符合 caja 的库。阅读有关 htmlservice 和 caja 的文档。


编辑:使用新的 aps 脚本 iframe 模式,您应该能够使用常规文件选择器库。

于 2013-05-04T17:37:45.937 回答