簡體   English   中英

使用谷歌應用腳本將谷歌工作表中的數據拆分到另一張工作表

[英]Split data in google sheet to another sheet using google app script

我嘗試按行拆分 google 工作表中的數據並創建新工作表並將數據傳輸到新工作表。 這是我的腳本示例:

var ss= getspreadsheetId();
var sheet = ss.getActiveSheet();
var data = sheet.getDataRange().getValues();
var lastRow = sheet.getLastRow();
var ui_user = SpreadsheetApp.getUi();
var result = ui_user.prompt("Enter split Number?"); 
var split_number=result.getResponseText();
var sheetName = ui_user.prompt("Enter Sheet name *Separate by space");
var sheetName_user =sheetName.getResponseText();
var sheetNamet_user_split=sheetName_user.split(" ");
data = sheet.getDataRange().getValues();
result = [];

//calculation to get row data split
split_value=Math.floor(lastRow/split_number);
//Logger.log(split_value);

 for(i=0;i<split_number;i++){

 for(j=0;j<split_value;j++){

 result.push(data[j]);


}
ss.insertSheet(sheetNamet_user_split[i]);

var sheetAdd = ss.getSheetByName(sheetNamet_user_split[i]);
sheetAdd.getRange(1,1,result.length,result[0].length).setValues(result);
result=[]

}

此腳本中的問題是我只能為創建的每個工作表顯示相同的數據。 有什么辦法可以增加迭代,以便它可以迭代新數據?

修改點:

  • 在您的腳本中, for (j = 0; j < split_value; j++) { result.push(data[j]); }使用相同的值 for (j = 0; j < split_value; j++) { result.push(data[j]); } 我認為這就是您問題的原因The problem in this script is i only able to display same data for every sheet that created. .
  • insertSheet方法返回插入的工作表 object。
  • 當輸入的工作表名稱的數量多於拆分值時,插入空工作表。

當這些點都體現在你的腳本中時,下面的修改怎么樣?

從:

data = sheet.getDataRange().getValues();
result = [];

//calculation to get row data split
split_value=Math.floor(lastRow/split_number);
//Logger.log(split_value);

 for(i=0;i<split_number;i++){

 for(j=0;j<split_value;j++){

 result.push(data[j]);


}
ss.insertSheet(sheetNamet_user_split[i]);

var sheetAdd = ss.getSheetByName(sheetNamet_user_split[i]);
sheetAdd.getRange(1,1,result.length,result[0].length).setValues(result);
result=[]

}

到:

var data = sheet.getDataRange().getValues();
var split_value = Math.floor(lastRow / split_number);
sheetNamet_user_split.forEach(e => {
  var values = data.splice(0, split_number);
  if (values.length > 0) {
    var sheetAdd = ss.insertSheet(e.trim());
    sheetAdd.getRange(1, 1, values.length, values[0].length).setValues(values);
  }
});
  • 在此修改中,為了使用每個拆分值,我使用了splice()

參考:

暫無
暫無

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

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