繁体   English   中英

如何在Google Apps脚本中获取“this”文件的当前实例?

[英]How do I get the current instance of “this” file in Google Apps Script?

我正在尝试创建对当前DriveApp File对象的引用(即脚本本身的实际Google Drive容器)。 这是我正在尝试做的事情:

// Assume that thisFile is a FileIterator pointing to THIS file.
// My question in a nutshell: How do I get thisFile?
DriveApp.getFileById( thisFile.getId() );

我想这样做而不是DriveApp.getFileById(id),因为我不想“硬编码”脚本文件的ID字符串。 这样,如果我复制了Google Apps脚本项目,我就不必编辑Code.gs或脚本属性中的任何内容。 有什么建议?

Apps脚本可以是独立的,也可以是4个容器中的一个(现在):Google表格,文档,表格和网站。 如果您事先知道容器的类型,那么很容易获得它的id 例如

var id = SpreadsheetApp.getActiveSpreadsheet().getId();
var id = DocumentApp.getActiveDocument().getId();
var id = FormApp.getActiveForm().getId();
var id = SitesApp.getActiveSite().getId();

如果您不知道容器类型(这会很奇怪),您可以将它们包装在各种try-catch es中并找出答案。

假设它不是Google网站,那么您可以安全地获取此ID并使用它来检索容器的DriveApp 文件表示。

var file = DriveApp.getFileById(id);

但是这个file只是DriveApp API的一个对象,它不是真正this引用,就像在编程意义上一样。 您可以像使用DocsList或高级Drive服务一样轻松地检索同一容器的不同表示。

最后,我不知道如何动态地(从内部)获取独立脚本的id。 我怀疑这是不可能的。 但是,我不知道它是如何有用的。 --edit如果你只想复制,为什么不直接获取“固定”源脚本?

如果单击Apps脚本文件,打开右侧的详细信息窗口,查看Apps脚本的文件详细信息,您将看到一个类型属性。 将指针悬停在类型的“Google Apps脚本”字样上,它应显示:

应用程序/ vnd.google-应用程序脚本

我认为你可以搜索文件的类型。 searchFiles(params)

Google文档 - searchFiles()方法

另见:

搜索参数

我想你会用mime-type搜索:

mimeType = 'application/vnd.google-apps-script'

因此,您可以在用户驱动器中找到所有Apps脚本文件,然后如果您可以在Apps脚本文件上设置唯一属性,您也可以搜索它。

或者通过fullText搜索,其中包括文件描述,并在文件中添加唯一的描述。 这样您就可以确保找到您创建的应用程序脚本文件。 然后,一旦搜索找到该文件,您就有了参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM