[英]Overwrite Spreadsheet in Google Apps Script
我想在每次執行腳本(GAS)時打開一個新的電子表格。 不幸的是,SpreadsheetApp.create()繼續創建具有相同名稱的同一文件的“多個”副本。 如何覆蓋驅動器上已經存在的文件的內容?
您可以使用SpreadsheetApp.create()
來創建具有給定名稱的新電子表格文件,但是沒有等效的SpreadsheetApp.open()
函數接受文件名。 如您.create()
, .create()
將始終創建一個新文件-它不在乎是否已存在具有該名稱的文件。
如果要打開文件名以打開電子表格,則需要先找到該文件,然后將File對象傳遞給SpreadsheetApp.open()
。
此實用程序功能將打開一個現有的電子表格,如果不存在這樣的文件,則將創建一個電子表格。
/**
* Returns the Spreadsheet with the given file name. If no such spreadsheet
* exists, it will be created.
*/
function openSheetByName(filename) {
if (arguments.length == 0 || filename =="") throw new Error( "Missing filename." );
var files = DocsList.getFilesByType('spreadsheet');
var sheet;
var i = 0;
// Loop over all spreadsheet files. Loop ends when we reach the end,
// or if we find a matching filename.
while ( i < files.length && (files[i].getName() !== filename) )
i++;
if (i == files.length) {
// We didn't find the file, so create it.
sheet = SpreadsheetApp.create(filename);
}
else {
// We found it, use it.
sheet = SpreadsheetApp.open(files[i]);
}
return sheet;
}
這是使用實用程序功能的readRows()
示例的修改版本。
function readRows() {
var sheet = openSheetByName("Favourite");
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
Logger.log(row);
}
};
您可能正在尋找Sheet.clear() 。
有刪除的內容和格式幾個選項在這里 。
使用最新版本的Google Apps Services,可以修改@Mogsdad給出的打開現有工作表的腳本,以打開現有工作表或創建新工作表(如果不存在的話)
/**
* Returns the Spreadsheet with the given file name. If no such spreadsheet
* exists, it will be created.
*/
function openSheetByName(filename)
{
if (arguments.length == 0 || filename =="") throw new Error( "Missing filename." );
var files = DriveApp.getFilesByName(filename);
var sheet;
// Check we found a sheet with the name
while ( files.hasNext())
{
sheet = files.next();
if(sheet.getName() == filename)
{
Logger.log("Opened Sheet: " + filename);
return SpreadsheetApp.open(sheet);
}
}
// We didn't find the file, so create it.
sheet = SpreadsheetApp.create(filename);
Logger.log("Created new Sheet for: " + filename);
return sheet;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.