簡體   English   中英

將工作表復制到另一個電子表格[Google Apps腳本]

[英]Copy sheet to another spreadsheet [Google Apps Script]

我無法使此功能正常工作。 它必須將電子表格“ A”的所有值復制到電子表格“ B”。

function triggerOnTime() {
  var SpreadSheetKeyA = "142WNsfQQkSx4BuNhskDM9aXD9ylRHNZh34oO5TBTt1g";
  var SpreadSheetKeyB = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getActiveSheet();
  var data = sheet1.getDataRange().getValues();
  var array = [];
  for (var y = 1; y < data.length; y++) {

    for (var x = 0; x < 35; x++){
      array.push(data[y][x]);
    }
      Logger.log(array);
      sheet2.appendRow(array);
      sheet1.deleteRow(y);
      }
}

現在,它會復制兩個或三個值,但會多次復制(隨機)。 該函數還必須從sheetA中刪除復制的值。 但是它只會刪除添加到sheetB的值。

編輯(更新代碼)

function triggerOnTime() {
  var SpreadSheetKeyA = "142WNsfQQkSx4BuNhskDM9aXD9ylRHNZh34oO5TBTt1g";
  var SpreadSheetKeyB = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getActiveSheet();
  var data = sheet1.getDataRange().getValues();
  var array = [];
  for (var y = 0; y < data.length; y++) {

    for (var x = 0; x < 35; x++){
      array.push(data[y][x]);
    }
      sheet2.appendRow(array);
      sheet1.deleteRow(y+1);
      array = [];
      }
}

經過一番摸索,我找到了一個適合您的解決方案(我猜是一個hack,我敢肯定,這樣做有更好的方法)

發生的是,在第14行的appendRow(array)處,您正在將數組的當前狀態附加到第二張表上; 基本上會隨着時間的推移創建數組值的大金字塔。

如果工作表1包含以下內容:1,1,1

2,2,2

3,3,3

4,4,4

5,5,5

您的工作表2會附加以下內容:1,1,1

1,1,1,2,2,2

1,1,1,2,2,2,3,3,3

... 等等。

您可以執行以下操作:

function triggerOnTime() {
  var SpreadSheetKeyA = "142WNsfQQkSx4BuNhskDM9aXD9ylRHNZh34oO5TBTt1g";
  var SpreadSheetKeyB = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getActiveSheet();
  var data = sheet1.getDataRange().getValues();
  var array = [];
  for (var y = 1; y < data.length; y++) {

    for (var x = 0; x < 35; x++){
      array.push(data[y][x]);
    }
      sheet2.appendRow(array);
      sheet1.deleteRow(y);
      array = []; //reset the array contents
      }
}

額外的行將重置陣列並添加要復制到的行。

讓我知道這是否適合您。

暫無
暫無

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

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