繁体   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