我尝试创建对当前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或脚本属性中的任何内容。有什么建议吗?
答案 0 :(得分:3)
Apps脚本可以是独立的,也可以是4个容器中的一个(现在):Google表格,文档,表格和网站。如果你事先知道容器的类型,那么很容易得到它的id
。 e.g。
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
File表示。
var file = DriveApp.getFileById(id);
但是这个file
只是DriveApp
API的一个对象,它不是真正一个this
引用,就像编程意义一样。您可以轻松使用DocsList
或高级Drive
服务来检索同一容器的不同表示形式。
最后,我不知道如何动态地(从内部)获取独立脚本的id。我怀疑它不可能。但我也不知道这有什么用。 - 编辑如果您只想复制,为什么不抓住"修复"源脚本直接?
答案 1 :(得分:0)
如果您单击Apps脚本文件,请打开右侧的详细信息窗口,查看Apps脚本的文件详细信息,您将看到类型属性。将指针悬停在类型的“Google Apps脚本”字样上,它应显示:
<强> 应用/ vnd.google-应用脚本 强>
我认为你可以搜索文件的类型。 searchFiles(params)
Google Documentation - searchFiles() method
另见:
我想你会用mime-type搜索:
mimeType = 'application/vnd.google-apps-script'
因此,您可以在用户驱动器中找到所有Apps脚本文件,然后如果您可以在Apps脚本文件上设置唯一属性,也可以搜索它。
或按fullText
搜索,其中包含文件说明,并在文件中添加唯一说明。这样您就可以确保找到您创建的应用程序脚本文件。然后,一旦搜索找到了该文件,您就可以参考了。