簡體   English   中英

用於剪切和粘貼從一個谷歌表到另一個谷歌表的范圍的谷歌應用程序腳本

[英]Google app script to cut and paste a range from a google sheet to another google sheet

我正在嘗試編寫一個腳本,該腳本可以從 google 電子表格中剪切一個范圍並將其粘貼到另一個電子表格中。 只要源工作表是我文檔中的第一張工作表,腳本就可以正常工作。 如何修復它以便腳本無論在我的文檔中的哪個位置都能抓取正確的工作表?

我對此非常陌生,並且主要使用我在網上找到的代碼。 可能犯了一個非常明顯的錯誤..

function CopyRangeTo_OtherSheet() {
 var sss = SpreadsheetApp.openById('1O1gML-IeOkx6n6RhCavay6Zg9zflalcVs0qkB2yu7bE'); 
 var ss = sss.getSheetByName('Sheet1'); 
 var range = ss.getRange(2,4,sss.getLastRow()-1,9); 
 var data = range.getValues();

 var tss = SpreadsheetApp.openById('1WHoETM3QxV166ndnPW4Qv37Y6SBGPVw-CcEQxNpw0Co'); 
 var ts = tss.getSheetByName('Sheet3'); 

 ts.getRange(ts.getLastRow()+1, 1,50,9).setValues(data); 

  var spread = SpreadsheetApp.openById('1O1gML-IeOkx6n6RhCavay6Zg9zflalcVs0qkB2yu7bE');
var sheet = spread.getSheetByName("Sheet1");
  sheet.getRange("D2:H").clearContent();

}


你的行var ss = sss.getSheetByName('Sheet1'); 意味着您使用名稱為Sheet1的工作表。

這是您用來從range獲取values並隨后復制它們的工作表。

如果您想從不同的工作表復制/剪切和粘貼值,只需將工作表的正確名稱粘貼到var ss = sss.getSheetByName('PASTE HERE THE NAME OF THE SHEET');

小注:

如果要清除的范圍與從中復制值的范圍相同,則無需再次定義它。 您可以簡單地替換線條

var spread = SpreadsheetApp.openById('1O1gML-IeOkx6n6RhCavay6Zg9zflalcVs0qkB2yu7bE'); var sheet = spread.getSheetByName("Sheet1"); sheet.getRange("D2:H").clearContent();

通過

range.clearContents();

另請注意:

setValues()僅在應設置值的范圍具有與值范圍(即原始范圍)相同的維度時才起作用。

如果您的原始范圍是2,4,ss.getLastRow()-1,9 ,則行數為ss.getLastRow()-1 ,列數為9

因此,您需要定義

ts.getRange(ts.getLastRow()+1, 1,ss.getLastRow()-1,9).setValues(data); 

動態調整行號。

每個工作表中的行數將不同。 電子表格類上的.getLastRow()僅返回第一張工作表中的最后一行。 getLastRow 代替

ss.getLastRow()

暫無
暫無

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

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