【问题标题】:How do I use Google doc picker with html service如何将 Google 文档选择器与 html 服务一起使用
【发布时间】:2013-05-03 18:49:38
【问题描述】:

我正在开发一个使用 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 并不容易。

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

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

【问题讨论】:

  • 你能在doGet中发布你的代码吗
  • function doGet() { return HtmlService.createTemplateFromFile('Copy and Share').evaluate(); } 我只是想为我学校的谷歌网站创建一个应用程序,它允许老师选择一个文件,然后为班级中的每个学生制作一份副本并分享它跟他们。我已经弄清楚了所有的共享和复制,但不知道如何将文件选择器集成到其中。
  • Google 课堂即将推出,将为您处理这些类型的操作。如果您想尝试并尝试编写代码,那就去做吧……但我会节省我的时间并将其应用于您的课程的一些准备工作! :)

标签: google-apps-script filechooser google-caja google-picker


【解决方案1】:

您实际上可以让它在 HTML 服务中工作。方法如下...

新建一个apps脚本项目,在项目中制作以下文件:

code.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

【讨论】:

    【解决方案2】:

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


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

    【讨论】:

      猜你喜欢
      • 2014-01-08
      • 1970-01-01
      • 2017-03-29
      • 2022-11-05
      • 1970-01-01
      • 2017-04-22
      • 2013-06-11
      • 2021-08-22
      • 2020-09-28
      相关资源
      最近更新 更多