Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用google脚本根据列值插入下面的行_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用google脚本根据列值插入下面的行

Google apps script 使用google脚本根据列值插入下面的行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我坚持这样做。一开始似乎很容易,但后来我迷路了 我的目标是: 要基于单元格值(C列)插入行,请在下面插入行 插入新行后,复制上一行的数据+上一行的字符串值,并从上一行删除该值 我试图使用这个公式,但我迷路了 function addRows(){ var ss = SpreadsheetApp.getActive(); var sheet1 = ss.getSheets()[1]; var dataRange = sheet1.getDataRange(); var dat

我坚持这样做。一开始似乎很容易,但后来我迷路了

我的目标是:

  • 要基于单元格值(C列)插入行,请在下面插入行
  • 插入新行后,复制上一行的数据+上一行的字符串值,并从上一行删除该值

我试图使用这个公式,但我迷路了

function addRows(){
  var ss = SpreadsheetApp.getActive();
  var sheet1 = ss.getSheets()[1];
  var dataRange = sheet1.getDataRange();
  var dataValues = dataRange.getValues();

  for (var i = 0; i<dataValues.length; i++) {
    for (var j= 0; j<dataValues.length; i++) {
      /* If blank or 0 - zero, skip */
      if (dataValues[i][3] == "" || dataValues[i][3]== 0) {continue;}
      /* If value is >=1, insert new row(s) below the active row */
      if (dataValues[i][3] >=1) { 
      sheet1.insertRowAfter(i);
      sheet1.getRange(...) // copy the data from previous + string  
      }
    }
  }
}
函数addRows(){
var ss=SpreadsheetApp.getActive();
var sheet1=ss.getSheets()[1];
var dataRange=sheet1.getDataRange();
var dataValues=dataRange.getValues();
对于(var i=0;i=1){
活页1.在(i)之后插入箭头;
sheet1.getRange(…)//从上一个+字符串复制数据
}
}
}
}
  • 在共享电子表格中,您希望将“A2:B3”的值转换为“A6:B11”的值
  • 在共享映像中,您希望实现以下目标

    • Data1   A0HD, B0DP
      Data2   C12X, D0B1, E2C1, F6H1
      
    • Data1   A0HD
      Data1   B0DP
      Data2   C12X
      Data2   D0B1
      Data2   E2C1
      Data2   F6H1
      
  • 您希望使用谷歌应用程序脚本实现这一点

我可以像上面那样理解。如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

示例脚本: 为了测试脚本,请在共享电子表格中使用以下脚本。然后运行脚本

function myFunction() {
  var sourceSheetName = "Sheet6";
  var destinationSheetName = "Sheet6";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sourceSheetName);

  // Retrieve source values.
  var values = sheet.getRange("A2:B3").getValues();

  // Convert values.
  var result = values.reduce(function(ar, [a, b]) {
    var temp = b.split(",");
    for (var i = 0; i < temp.length; i++) {
      ar.push([a, temp[i].trim()]);
    }
    return ar;
  }, []);

  // Put values.
  var dstSheet = ss.getSheetByName(destinationSheetName);
  dstSheet.getRange(dstSheet.getLastRow() + 1, 1, result.length, result[0].length).setValues(result);
}
函数myFunction(){
var sourceSheetName=“Sheet6”;
var destinationSheetName=“Sheet6”;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(sourceSheetName);
//检索源值。
var值=sheet.getRange(“A2:B3”).getValues();
//转换值。
var结果=值.reduce(函数(ar,[a,b]){
var temp=b.拆分(“,”);
对于(变量i=0;i
  • 在上面的脚本中,当脚本运行时,从“Sheet6”中检索“A2:B3”的值,并将转换后的值放入“Sheet6”的最后一行
  • 如果只将输入值放入源工作表,则还可以使用
    var values=sheet.getRange(2,1,sheet.getLastRow()-1,2).getValues()而不是
    var values=sheet.getRange(“A2:B3”).getValues()
注:
  • 这是一个简单的示例脚本。因此,请修改您的实际电子表格
参考:

为了帮助您思考您的目标,您能否提供包含您期望的输入和输出的示例电子表格?以下是示例表-表6。我还更新了上面的图片,“数据”列的文本不正确。感谢您回复并提供电子表格样本。我在哪里可以看到您期望的输入和输出?是否要将“表6”中的“A2:B2”转换为“A6:B11”?是的,这是正确的。我希望的输出是A6:B11。谢谢你的回复。我提出了一个示例脚本作为答案。你能确认一下吗?如果我误解了你的问题,而这不是你想要的方向,我道歉。非常感谢。是的,你的剧本成功了。快速提问,“ar”对这个“函数(ar,[a,b]”意味着什么?我想确保我了解它是什么以及它是如何使用的。@JMR感谢您的回答。我很高兴您的问题得到解决。关于您的其他问题,
ar
[a,b]
分别是。并且用于“当前值”。