结合multy数组并排google脚本

时间:2017-02-21 12:17:55

标签: arrays regex google-apps-script wildcard

我在Google脚本上有这个代码,用于通过Sheet3中的Sheet2中的条件从Sheet1获取数组。但现在阵列只放置一个在另一个之下。我需要的是在接下来的5列中放置来自'v'的每个新数组,就像我的电子表格中的示例一样。

其次 - 在此之前,我使用了带搜索公式的过滤器,允许我使用*或?等通配符。我如何在我的新函数中使用通配符或正则表达式?

如果有任何帮助,我将不胜感激。

    function getval(){

      var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
      var sspodbor = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");

      var range = ss.getRange("A2:A29");
      var values = range.getValues();

      var rangez = sheet.getRange("A1:A14");
      var valuesz = rangez.getValues();

      var z = []
      for (var x = 0; x<valuesz.length; x++){
        z.push(valuesz[x])
      }

      var v = [];
      for (var q = 0; q < valuesz.length; q++){
        for (var s = 0; s < values.length; s++){
          if(values[s][5] ==  z[q]){
            v.push([values[s][0],values[s][1],values[s][2],values[s][3],values[s][4]]);
          }
//I am guessing that here must be a separating function       
        }
      }
      var range = sspodbor.getRange(4, 1, v.length,v[0].length);
      range.setValues(v);
    }

我的电子表格:https://docs.google.com/spreadsheets/d/1o7ErbeFHA7yyxMC0HMn3Uj5ZBRcy2uAwa1UpolVpBFI/edit?usp=sharing

1 个答案:

答案 0 :(得分:1)

横向展开各组

这不是你所见过的最漂亮的解决方案,希望其他人能够看到它并做出改进,但就在这里。

function getval()
{
  var Sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var Sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
  var output = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("output");
  var knew = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('knew');
  var knewrange = knew.getRange(1,1,10,100);
  var pipe = '';

  var range1 = Sheet1.getRange("A2:F29");
  var values1 = range1.getValues();

  var range2 = Sheet2.getRange("A1:A14");
  var values2 = range2.getValues();

  var z = [];  
  for (var x = 0; x<values2.length; x++)
  {
    z.push(values2[x])
  }
  var v = [];
  for (var q = 0; q < values2.length; q++)
  {
    for (var s = 0; s < values1.length; s++)
    {
      if(values1[s][5] ==  z[q])
      {
        v.push([values1[s][0],values1[s][1],values1[s][2],values1[s][3],values1[s][4],q]);
      }
    }
  }
  var vlength=v.length;  
  var range3 = output.getRange(1, 1, v.length,6);
  range3.setValues(v);

  var w = [];
  var voff = 0;
  var hoff = 0;
  for(var m=0;m<10;m++)
  {
    w[m]=[];
    for(var n=0;n<100;n++)
    {
      w[m][n]='' ;
    }
  }
  var color = ['yellow','orange'];
  for(var i=0;i<v.length;i++)
  {
    for(var j=0;j<5;j++)
    {

      if(i-voff==0){knew.getRange((i-voff + 1),(j + hoff + 1),4,5).setBackground(color[v[i][5] % 2])};
      if((i-voff)==0 || v[i][5] == v[i-1][5])
      {
        w[i - voff][j + hoff]=v[i][j];
      }  
      else
      {
        voff = i;
        hoff += 5;
        w[i - voff][j + hoff]=v[i][j];
      }
    }
  }
  knewrange.setValues(w);
}

我复制了电子表格中的数据和原始的getval函数。我最终更改了一些名称,以便我可以更容易地找出在哪里找到数据。对我来说这是一个难题,也是我喜欢的问题。  感谢