[英]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.