簡體   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