【问题标题】:Google Sheets Add row based on cell number valueGoogle表格根据单元格编号值添加行
【发布时间】:2019-12-10 09:03:28
【问题描述】:

我正在尝试制作一个基于单元格值添加一行的谷歌工作表脚本,基本上如果我在数量(D 列)7x 笔记本电脑中,如果 H 列标记为,我希望脚本在下面添加 6 个额外的行“是”通过数据验证。

我能够找到并做的只是复制该行但没有数据验证,我更愿意添加数据验证,并可能在复制后将每个数量拆分为 1(而不是 7)。

`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][3])){continue};// if column 3 is not a number then do nothing
      for(var c=1 ; c < Number(data[n][3]) ; 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).sort({column: 1, ascending: false});// write new data to sheet, overwriting old data
}`

希望有人能够帮助我。 谢谢,

  • 欢迎。只是为了澄清......您要添加的附加行数是否等于“D列中的数量”减一(例如七减一=六)?当\"a\" = qty (一个整数值), b=\"x\" c=\"a space\" and d = product , 表示为复数名词,可以包含也可以不包含空格。

标签: google-apps-script google-sheets insert row google-apps


【解决方案1】:

D 列包含数量和货物描述。如果 Column H = "Yes",您想在 Col D 下方插入等于 qty 减一的行数。如果 H 列 <> “是,则不采取任何行动。


样本数据 - 之前


样本数据 - 之后


function so5925663201() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "59256632";
  var sheet = ss.getSheetByName(sheetname);

  var row = 7;

  // get value of Column H
  var colHValue = sheet.getRange(row,8).getValue();

  if (colHValue === "Yes"){
    //Logger.log("DEBUG: Col H = yes. do something")

    // get value of Column D
    var Value = sheet.getRange(row,4).getValue();
    var searchterm = "x";
    var indexOfFirst = Value.indexOf(searchterm);
    //Logger.log("DEBUG: the first instance of 'x' is "+indexOfFirst);

    // get the quantity and convert from a string to a number
    var qty = Value.substring(0, indexOfFirst);
    var qtynum = +qty;
    // var newtype = typeof qtynum; // DEBUG
    //Logger.log("DEBUG: the quantity is "+qtynum+", new type = "+newtype)

    // This inserts rows after 
    sheet.insertRowsAfter(row, qtynum-1);
  }
  else{
    //Logger.log("DEBUG: col H <> Yes. do nothing");
  }
}

【讨论】:

  • 一旦用户在工作表的下拉菜单中选择“是”,是否有任何方法可以激活此脚本?并在插入新行时让脚本复制下面的一些信息?像“戴尔笔记本电脑”?
  • 另外,另一个快速的问题,我将项目的数量放在一个单独的列中,格式为数字。我可以省略“searchterm”变量并省略从字符串到数字的转换,对吗?也非常感谢你在这方面帮助我,我对 Java Script 还是很陌生,在分配的时间里,我认为谷歌表格脚本也适用于 VBA 哈哈。
  • 我有一种感觉,这种情况比问题中描述的要多……是的,您可以省略搜索词和转换。触发器有几个选项,很大程度上取决于用户数量、编辑频率等。一些选项是“onEdit”、自定义菜单或触发脚本的按钮。
  • 是的,对此感到抱歉。我以为我对我的场景不是很清楚。
  • 您当然可以填充空行;还有一些选项,不仅可以填充 D 列,还可以填充其他列。您可能还希望(这将事情提升到另一个层次)对行进行分组 - 因此,7xlaptops 展开以显示其他行。我的建议是,既然您知道可以插入行,请考虑一下您想要实现的结果包,而不是零碎地添加内容。
猜你喜欢
  • 1970-01-01
  • 2018-07-31
  • 2022-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
相关资源
最近更新 更多