2012-11-30 112 views
3

this question教導如何調整文件的文件夾以將其移至特定文件夾並移出根目錄。在特定文件夾中創建Google電子表格

它也建議使用folder.createFile直接在所需的文件夾中創建它...但它看起來createFile只適用於文檔...有沒有辦法直接在特定的文件夾中創建電子表格?

回答

3

使用Apps創建電子表格腳本不適用於常規Google帳戶和Google Apps Standard Edition帳戶。但是,您始終可以製作虛擬電子表格的副本,然後使用Google Apps腳本對其進行相應修改。這是一個示例代碼。

function createSpreadsheetInfolder() { 
    var dummySS = DocsList.getFileById('ID of dummy SS'); 
    var myCopy = dummySS.makeCopy('My new file'); 
    //Get your target folder 
    var folder = DocsList.getFolder('ID or path of folder'); 
    myCopy.addToFolder(folder); 
} 
+1

嗯。似乎適用於Apps標準版。如果有其他記錄,在哪裏?因此,我們可以在文檔或功能中報告問題... – Victoria

+1

目前,創建電子表格在我的常規Google帳戶中可以正常工作。 –

0

此代碼對我的作品,我覺得這是沒有辦法避免的一步「從根源消除」,至少不是我所知道。

function createSpreadsheet() { 
var folder = DocsList.getFolder('GAS');// this value as test for me 
var root = DocsList.getRootFolder() 
var newFileId = SpreadsheetApp.create('testNewSS').getId();// this defines the name of the new SS 
var newFile = DocsList.getFileById(newFileId); // begin the 'move to folder process' 
newFile.addToFolder(folder); 
newFile.removeFromFolder(root);// had to do it in 2 separate steps 
} 
+0

謝謝。是的,我有這樣的代碼,從另一個問題的答案派生出來......似乎Docs比Spreadsheets更平等,或者我錯過了一些東西。 – Victoria

0

這個問題已經在beeen answerd。 https://stackoverflow.com/a/19610700 這是一個很好solustion。

folder.createFile("name", '',MimeType.GOOGLE_SHEETS); 

使用除空字符串以外的任何內容都會給我一個錯誤。

+0

看起來像一個不錯的API,但它是一個我可以從我的電腦運行的API,我有我想要加載到電子表格中的數據,或者它只能作爲Google網站的腳本運行,就像Google APP ? – Victoria

7

由於已超出DocsList已被棄用,目前以下解決方案的工作原理:

var folder=DriveApp.getFoldersByName(folderName).next();//gets first folder with the given foldername 
var file=SpreadsheetApp.create(fileName); 
var copyFile=DriveApp.getFileById(file.getId()); 
folder.addFile(copyFile); 
DriveApp.getRootFolder().removeFile(copyFile); 
+0

我得到''TypeError:在對象FolderIterator中找不到函數addFile。「'因爲getFoldersByName返回一個FolderIterator而不是文件夾 –

2

已經給出的答案似乎不工作,也許他們是過時的。

這是我的答案(爲我工作)。

var folders=DriveApp.getFoldersByName("existingFolder"); 
while (folders.hasNext()) { 
    var folder = folders.next(); 
    var file=SpreadsheetApp.create("the file that must be in a folder"); 
    var copyFile=DriveApp.getFileById(file.getId()); 
    folder.addFile(copyFile); 
    DriveApp.getRootFolder().removeFile(copyFile); 
} 
+0

這是爲我工作的解決方案。最投票答案給了我一個錯誤,因爲'var folder = DriveApp.getFoldersByName(folderName);'返回一個FolderIterator對象而不是一個實際的文件夾。謝謝您的幫助! –

1

誠然,我的回答是從以前的,其中沒有做正是我需要的。此功能已通過當前的Google Apps腳本和電子表格文檔進行了測試。使用重複的文件夾名稱將起作用,但將文件移至API返回的第一個文件夾。

// Arguments are a file object and a folder name. 
 
function moveFileToFolder(file, folderName) 
 
{ 
 
    var folders = DriveApp.getFoldersByName(folderName); 
 
    var copyFile = DriveApp.getFileById(file.getId()); 
 

 
    if (folders.hasNext()) { 
 
     var folder = folders.next(); 
 
     folder.addFile(copyFile); 
 
     DriveApp.getRootFolder().removeFile(copyFile); 
 
    } 
 
}

1

現在可以在一個特定的文件夾中創建谷歌電子表格。 爲此,您需要使用高級驅動器服務v2。在谷歌應用腳​​本編輯器的高級服務菜單中啓用它。

var oFile = placeGoogleSpreadsheetInSpecificFolder("my file", "target folder id"); 
var oSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(oFile.getId())); 

function placeGoogleSpreadsheetInSpecificFolder(sSpreadsheetName, sTargetFolderId) { 
    var oGeneratedFile = Drive.Files.insert({ 
     "mimeType": "application/vnd.google-apps.spreadsheet", 
     "parents": [{ 
      id: sTargetFolderId 
     }], 
     "title": sSpreadsheetName 
    }); 
    return oGeneratedFile; 
} 

這個解決方案對我來說工作得非常好。

相關問題