我的谷歌應用程序腳本將一個csv文件[test.csv]導入到一個新的選項卡中,操縱一些值,然後將操作的選項卡保存爲csv文件[test.csv]。當它保存新版本時,它只是製作另一個副本[test(1).csv]。我希望覆蓋以前的文件(或刪除舊的文件,然後導出/寫入新版本)。請幫助嗎?如何使用谷歌應用腳本刪除/覆蓋CSV文件?
我使用從Interacting With Docs List Tutorial
我的谷歌應用程序腳本將一個csv文件[test.csv]導入到一個新的選項卡中,操縱一些值,然後將操作的選項卡保存爲csv文件[test.csv]。當它保存新版本時,它只是製作另一個副本[test(1).csv]。我希望覆蓋以前的文件(或刪除舊的文件,然後導出/寫入新版本)。請幫助嗎?如何使用谷歌應用腳本刪除/覆蓋CSV文件?
我使用從Interacting With Docs List Tutorial
參考代碼你可以做DocsList.find(fileName)
,讓你有這個名字的文件列表。如果文件名是唯一的,那麼你可以做var file = DocsList.find(fileName)[0]
。
如果你是一個谷歌Apps的用戶,您可以使用file.clear()
刪除舊文件的所有內容,然後file.append()
插入所有的新內容。
否則,你將不得不file.setTrashed(true)
然後DocsList.createFile()
作出新的。
我知道這是一個古老的問題,但接受的答案中的大部分信息已被Google棄用。 DocsList消失了,就像文件對象上的clear()和append()方法一樣。
我用下面的函數來創建或覆蓋文件:
// Creates or replaces an existing file
function updateFile (folder, filename, data) {
try {
// filename is unique, so we can get first element of iterator
var file = folder.getFilesByName(filename).next()
file.setContent(data)
} catch(e) {
folder.createFile(filename, data)
}
}
以供參考,在這裏是做同樣的一個文件夾一些代碼。它假定我們正在當前工作表的父文件夾中操作,並且需要文件夾 對象用於新的或現有的文件夾。
// Get folder under current folder. Create it if it does not exist
function getOrCreateFolder(csvFolderName) {
var thisFileId = SpreadsheetApp.getActive().getId();
var thisFile = DriveApp.getFileById(thisFileId);
var parentFolder = thisFile.getParents().next();
try {
// csvFolderName is unique, so we can get first element of iterator
var folder = parentFolder.getFoldersByName(csvFolderName).next();
// asking for the folder's name ensures we get an error if the
// folder doesn't exist. I've found I don't necessarily catch
// an error from getFoldersByName if csvFolderName doesn't exist.
fname = folder.getName()
} catch(e) {
var folder = parentFolder.createFolder(csvFolderName);
}
return folder
}
謝謝你的菲爾,你是男人。 – BigK 2013-02-19 23:42:58