簡體   English   中英

BatchUpdate Google Apps 腳本正在自動清除工作表

[英]BatchUpdate Google Apps Script is clearing sheet automatically

我正在將一些 csv 數據粘貼到谷歌表中,並具有以下代碼。 出於某種原因,當我運行 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);
}

每當您在寫入后立即從電子表格中讀取數據時,您應該考慮使用 SpreadsheetApp.flush() 以確保您期望存在的所有數據實際上都是可讀的。 我更喜歡將我的數據盡可能長時間地保存在 arrays 中,這樣我通常可以執行一次讀取和寫入。 但是,如果您從一個 function 切換到另一個可能是不可能的。 一種選擇是將數據直接傳遞給順序函數,這樣它們就不必再次從電子表格中讀取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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