Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 使用嵌套FOR循环的杂散数据-示例工作表可用_Google Apps Script - Fatal编程技术网

Google apps script 使用嵌套FOR循环的杂散数据-示例工作表可用

Google apps script 使用嵌套FOR循环的杂散数据-示例工作表可用,google-apps-script,Google Apps Script,表格如下: 我试图将两张图纸合并到第三张图纸上,使用两张原始图纸之间共享的文本。我从这个网站和其他网站的示例中窃取了大部分代码。请查看我的“错误”在哪里,它在合并工作表的末尾创建了一行重复文本(但不是完整的数据行) setnote表数据: 名称设置注释 名称1设置注释1 名称2设置注释2 记录表数据: 姓名记录 姓名1注意事项1 姓名2注意事项2 合并图纸数据: 姓名setnote takenote 名称1 setnote1 takenote1 名称2 setnote2 takenote2 s

表格如下:

我试图将两张图纸合并到第三张图纸上,使用两张原始图纸之间共享的文本。我从这个网站和其他网站的示例中窃取了大部分代码。请查看我的“错误”在哪里,它在合并工作表的末尾创建了一行重复文本(但不是完整的数据行)

setnote表数据:
名称设置注释
名称1设置注释1
名称2设置注释2
记录表数据:
姓名记录
姓名1注意事项1
姓名2注意事项2
合并图纸数据:
姓名setnote takenote
名称1 setnote1 takenote1
名称2 setnote2 takenote2

setnote1我稍微修改了你的代码。另外,我认为你不需要匹配函数。我复制了您的数据,并将页面名称更改为set、tak和merge。我更改了一些变量的名称,并使用了getDataRange(),因为它更易于使用,而且键入的次数更少

function mergeDatav01()
{
  var ss=SpreadsheetApp.getActive();
  var mergeSht=ss.getSheetByName('merge');                     
  var setSht=ss.getSheetByName('set');
  var takSht=ss.getSheetByName('tak');
  var setVals=setSht.getDataRange().getValues();
  var takVals=takSht.getDataRange().getValues();                     
  var mergeStartRow=2;
  for (var i=1;i<takVals.length;i++) 
  {
    for (var j=1;j<setVals.length;j++) 
    {
      if (takVals[i][0]==setVals[j][0]) 
      {
        var row=[];
        row.push(takVals[i][0],setVals[j][1],takVals[i][1]);
        mergeSht.appendRow(row);
      }
    }
  }
}
函数mergeDatav01()
{
var ss=SpreadsheetApp.getActive();
var mergeSht=ss.getSheetByName('merge');
var setSht=ss.getSheetByName('set');
var takSht=ss.getSheetByName('tak');
var setVals=setSht.getDataRange().getValues();
var takVals=takSht.getDataRange().getValues();
var mergeStartRow=2;

对于(var i=1;i我稍微修改了您的代码。另外,我认为您不需要match函数。我复制了您的数据,并将页面名称更改为set、tak和merge。我更改了一些变量的名称,并使用了getDataRange(),因为它更易于使用,而且键入的次数更少

function mergeDatav01()
{
  var ss=SpreadsheetApp.getActive();
  var mergeSht=ss.getSheetByName('merge');                     
  var setSht=ss.getSheetByName('set');
  var takSht=ss.getSheetByName('tak');
  var setVals=setSht.getDataRange().getValues();
  var takVals=takSht.getDataRange().getValues();                     
  var mergeStartRow=2;
  for (var i=1;i<takVals.length;i++) 
  {
    for (var j=1;j<setVals.length;j++) 
    {
      if (takVals[i][0]==setVals[j][0]) 
      {
        var row=[];
        row.push(takVals[i][0],setVals[j][1],takVals[i][1]);
        mergeSht.appendRow(row);
      }
    }
  }
}
函数mergeDatav01()
{
var ss=SpreadsheetApp.getActive();
var mergeSht=ss.getSheetByName('merge');
var setSht=ss.getSheetByName('set');
var takSht=ss.getSheetByName('tak');
var setVals=setSht.getDataRange().getValues();
var takVals=takSht.getDataRange().getValues();
var mergeStartRow=2;

对于(var i=1;i如果你不想弄乱谷歌应用程序脚本,这里有一个公式化的方法

合并A2中的公式

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=过滤器(setnote!A2:A,setnote!A2:A“”)
合并B2中的公式

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(如果(A2:A“”,VLOOKUP(A2:A,setnote!A:B,匹配(“setnote”,setnote!$1:$1,0),FALSE),“”)
合并C2中的公式

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(IF(A2:A“”,VLOOKUP(A2:A,记笔记!A:B,匹配(“记笔记”,记笔记!$1:$1,0),FALSE),“”)
或者……您可以将所有内容合并到合并A2中

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
={Filter(setnote!A2:A,setnote!A2:A“”),ARRAYFORMULA(IF(Filter)(setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(setnote!A2:A,setnote!A2:A“”),setnote!A:B,match(setnote),setnote!1:$1,0),FALSE),“”),ARRAYFORMULA(IF(Filter(Filter)(setnote!A2:A,setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(Filter)(setnote!A2:A,setnote!A,takenote!A,takenote!$1,takenote,takenote,takenote,FALSE),“)}

如果你需要的话,我很乐意解释其中的任何一个。

如果你不想弄乱谷歌应用程序脚本,这里有一个公式化的方法

合并A2中的公式

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=过滤器(setnote!A2:A,setnote!A2:A“”)
合并B2中的公式

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(如果(A2:A“”,VLOOKUP(A2:A,setnote!A:B,匹配(“setnote”,setnote!$1:$1,0),FALSE),“”)
合并C2中的公式

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
=ARRAYFORMULA(IF(A2:A“”,VLOOKUP(A2:A,记笔记!A:B,匹配(“记笔记”,记笔记!$1:$1,0),FALSE),“”)
或者……您可以将所有内容合并到合并A2中

=Filter(setnote!A2:A,setnote!A2:A<>"")
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),""))
=ARRAYFORMULA(IF(A2:A<>"",VLOOKUP(A2:A,takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))
={Filter(setnote!A2:A,setnote!A2:A<>""),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),setnote!A:B,match("setnote",setnote!$1:$1,0),FALSE),"")),ARRAYFORMULA(IF(Filter(setnote!A2:A,setnote!A2:A<>"")<>"",VLOOKUP(Filter(setnote!A2:A,setnote!A2:A<>""),takenote!A:B,match("takenote",takenote!$1:$1,0),FALSE),""))}
={Filter(setnote!A2:A,setnote!A2:A“”),ARRAYFORMULA(IF(Filter)(setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(setnote!A2:A,setnote!A2:A“”),setnote!A:B,match(setnote),setnote!1:$1,0),FALSE),“”),ARRAYFORMULA(IF(Filter(Filter)(setnote!A2:A,setnote!A2:A,setnote!A2:A“”),VLOOKUP(Filter)(Filter)(setnote!A2:A,setnote!A,takenote!A,takenote!$1,takenote,takenote,takenote,FALSE),“)}
如果你需要的话,我很乐意解释其中的任何一个