Javascript BatchUpdate Google Apps脚本正在自动清除工作表

Javascript BatchUpdate Google Apps脚本正在自动清除工作表,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在将一些csv数据粘贴到google工作表中,并有下面的代码。出于某种原因,当我运行myFunction()时,数据会闪现到Google工作表中,但随后会立即消失,就好像调用了Sheet.clear()一样。当我注释掉sheet.clear()时,数据复制得很好。知道sheet.clear()为什么会被调用为无序吗?我想不出来 function myFunction(){ var spreadsheetId = 'some Id' var csvFileId = 'some Id'

我正在将一些csv数据粘贴到google工作表中,并有下面的代码。出于某种原因,当我运行myFunction()时,数据会闪现到Google工作表中,但随后会立即消失,就好像调用了Sheet.clear()一样。当我注释掉sheet.clear()时,数据复制得很好。知道sheet.clear()为什么会被调用为无序吗?我想不出来

function myFunction(){
  var spreadsheetId = 'some Id'
  var csvFileId = 'some Id'
  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName('Sheet1');
  sheet.clear();
  
  getCSVData(csvFileId, spreadsheetId);
}

function getCSVData(csvFileId, spreadsheetId){
  var data = DriveApp.getFileById(csvFileId)
  .getBlob()
  .getDataAsString();
  var sheetId = SpreadsheetApp.openById(spreadsheetId)
  .getSheets()[0]
  .getSheetId();
    
  var resource = {
    requests: [
      {
        pasteData: {
          data: data,
          coordinate: { sheetId: sheetId,
                       rowIndex: 0,
                       columnIndex: 0 },
          type: 'PASTE_VALUES',
          delimiter: ","
        },
      }
    ],
    includeSpreadsheetInResponse: true,
  };
  Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId);
}

当你在一个写之后立即从电子表格中读取数据时,你应该考虑使用Sead SeaEppApp.FrHuSH()来确保你期望在那里的所有数据都是可读的。我更喜欢尽可能长时间地将数据保存在数组中,以便通常可以执行一次读写操作。但是,如果您从一个功能切换到另一个功能,这可能是不可能的。一种选择是直接将数据传递给顺序函数,这样它们就不必再次从电子表格中读取数据。

在函数调用之前添加一个SpreadsheetApp.flush()。嘿!成功了!非常感谢!