簡體   English   中英

在Google Apps腳本中覆蓋電子表格

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

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