Google apps script 基于值在Google电子表格中复制行

Google apps script 基于值在Google电子表格中复制行,google-apps-script,google-sheets,google-spreadsheet-api,Google Apps Script,Google Sheets,Google Spreadsheet Api,我试图通过编程在谷歌电子表格中复制行。我希望行的复制次数基于行本身中的一个值 例如,假设我有这样一个表: 您可以看到C列中有数字。C列中的值是我希望复制该行的次数。这就是预期结果的样子: 从技术上讲,如果列C中的值是3,我们将复制该行两次 任何关于如何编写一个谷歌电子表格来实现这一点的想法都将非常棒 谢谢 这相当简单,你应该自己尝试一下。我相信当你阅读下面的代码时,你会说“哦,当然,我可以很容易地做到”。。。对吧? function autoDup() { var sheet = Spr

我试图通过编程在谷歌电子表格中复制行。我希望行的复制次数基于行本身中的一个值

例如,假设我有这样一个表:

您可以看到C列中有数字。C列中的值是我希望复制该行的次数。这就是预期结果的样子:

从技术上讲,如果列C中的值是3,我们将复制该行两次

任何关于如何编写一个谷歌电子表格来实现这一点的想法都将非常棒


谢谢

这相当简单,你应该自己尝试一下。我相信当你阅读下面的代码时,你会说“哦,当然,我可以很容易地做到”。。。对吧?

function autoDup() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var newData = [];
  for(var n in data){
    newData.push(data[n]);
    if(!Number(data[n][2])){continue};// if column 3 is not a number then do nothing
    for(var c=1 ; c < Number(data[n][2]) ; c++){ // start from 1 instead of 0 because we have already 1 copy
      newData.push(data[n]);//store values
    }
  }
  sheet.getRange(1,1,newData.length,newData[0].length).setValues(newData);// write new data to sheet, overwriting old data
}
函数autoDup(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data=sheet.getDataRange().getValues();
var newData=[];
for(数据中的变量n){
newData.push(数据[n]);
如果(!Number(data[n][2]){continue};//如果第3列不是数字,则不执行任何操作
对于(var c=1;c
假设您的输入在inSheet上,您可以在不同的工作表上放置以下公式
=transpose(split(数组公式(textjoin(“,”,false,iferror(rept(inSheet!A1:a&“,”,inSheet!$C1:$C)),“,”)
并将其向右拖动两次即可。
这可以防弹处理空单元格或带有逗号或重复值为0的单元格,但对于上面这样的好数据,它可以按原样工作。

Serge,一如既往的令人敬畏的响应!非常干净简洁!我对你的期望不会降低!我唯一建议添加的是对新的数据范围进行排序。。。。e、 g.var newData=sheet.getRange(1,1,newData.length,newData[0].length).setValues(newData);排序({列:1,升序:false});//与示例中第1列的降序排序保持一致。@Cyrus Loree感谢您的好话。我认为脚本没有改变数据顺序…你怎么会这么认为?顺便说一句,因为你使用的排序方法是
range
方法,你可以像这样链接它:
sheet.getRange(1,1,newData.length,newData[0].length).setValues(newData.sort({column:1,升序:false})