簡體   English   中英

使用 DriveApp 在特定文件夾中創建 Google Sheet

[英]Creating a Google Sheet in a specific folder with DriveApp

我想使用 Google Apps Script 在 Google Drive 上的特定文件夾中創建 Google Sheet。 根據File類的文檔

創建文件(名稱,內容,mimeType)

在當前文件夾中創建一個具有給定名稱、內容和 MIME 類型的文件。 如果內容大於 10MB,則引發異常。

 // Create an HTML file with the content "Hello, world!" DriveApp.getRootFolder().createFile('New HTML File', '<b>Hello, world!</b>', MimeType.HTML);

根據MimeType 文檔

枚舉 MimeType

提供對 MIME 類型聲明的訪問而無需顯式鍵入字符串的枚舉。 期望將 MIME 類型呈現為字符串(例如,'image/png')的方法也接受以下任何值,只要該方法支持基礎 MIME 類型即可。

沒有提到僅支持可用 MIME 類型子集的createFile 該頁面包含一個表,其中包含此 MIME 類型:

GOOGLE_SHEETS Enum Representation of MIME type for a Google Sheets file.

我的問題在於實現這種創建文件的方法,如File文檔中所述。

var folder = DriveApp.createFolder('new folder');
var ss = folder.createFile('new sheet', '', MimeType.GOOGLE_SHEETS);

這將引發錯誤,說明

無效參數:file.contentType(第 2 行,文件“代碼”)

用字符串application/vnd.google-apps.spreadsheet替換MimeType.GOOGLE_SHEETS顯然沒有幫助。 我知道這個問題,但接受的答案只是承認失敗,並通過在SpreadsheetApp創建文件、復制並刪除原始文件來使用常見的凌亂解決方法。 除了 Google Docs, 這個問題對同一問題也有同樣令人失望的公認答案。 SpreadsheetApp解決方法很好,但我希望有人能在 3 年內掌握如何正確使用createFile的答案。

嘗試這個:

function createFolderAndFile() {
  var folder = DriveApp.createFolder('RootSub');
  var file = SpreadsheetApp.create('RootSubSheet');
  Drive.Files.update({"parents": [{"id": folder.getId()}]}, file.getId());
}

谷歌問題跟蹤器在詢問這個問題方面有着悠久的歷史。 早在 2014 年,一位谷歌工作人員宣布這是一個已解決的問題,他們決定無法通過createFile方法創建MimeType.GOOGLE_類型的文件。

標記為固定。

經過廣泛考慮,我們確定不應使用 DriveApp.createFile() 來創建 MimeType.GOOGLE_* 文件。

很快,嘗試這樣做將失敗並導致更具描述性的錯誤消息。

不幸的是,盡管有其他承諾,但錯誤消息從未改變,文檔也從未更新以反映這種“廣泛考慮”。

使用 1 個服務器調用(不復制、刪除或更新)將MimeType.GOOGLE_類型文件添加到特定文件夾的正確解決方案是

var folder = DriveApp.createFolder('folder');
var file = {
    title: 'New Sheet',
    mimeType: MimeType.GOOGLE_SHEETS,
    parents: [{id: folder.getId()}]
}
ssId = Drive.Files.insert(file).id;

Drive.Files.insert確實需要Advanced Drive Service ,您可以使用指南在腳本中啟用該服務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM