Google apps script 我们如何根据另一张工作表上的输入行向Google工作表添加行组?

Google apps script 我们如何根据另一张工作表上的输入行向Google工作表添加行组?,google-apps-script,google-sheets,google-apps,Google Apps Script,Google Sheets,Google Apps,寻找谷歌表单的帮助 我们希望有一个工作表,根据另一个工作表中的数据输入创建摘要信息 随着原始数据表的增长,我们可能会有更多的人。输入将增长,如下所示: Room ID First Name Last Name Full Name State Zip Room Leader 1 Brian Smith Brian Smith NY 10011 1 Lazy Fox

寻找谷歌表单的帮助

我们希望有一个工作表,根据另一个工作表中的数据输入创建摘要信息

随着原始数据表的增长,我们可能会有更多的人。输入将增长,如下所示:

Room ID First Name  Last Name   Full Name       State   Zip    Room Leader
1       Brian       Smith       Brian Smith     NY      10011   
1       Lazy        Fox         Lazy Fox        VA      22209  Yes
2       Lauren      Appleby     Lauren Appleby  CA      94063  Yes
3       Aaron       Johnson     Aaron Johnson   IL      60603  Yes
3       Adam        Johnson     Adam Johnson    IL      60001   
当这种情况发生时,我们希望输出改变以反映这一点。它可能看起来像这样

Room Number 1          State    VA
Name        Lazy Fox        
Room Number 2          State    CA
Name        Lauren Appleby      
Room Number 3          State    IL
Name    Aaron Johnson   
抱歉随机剪切和粘贴,我想我没有足够的代表添加所有内容。希望它能让人明白这一点


这是可能的吗?如有任何想法,将不胜感激。谢谢

这是一个非模态对话框的摘要。我使用您的标题作为摘要字段名。我还以为你想要的是在房间的前导栏中有“是”的行

function dispSummary()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht=ss.getSheetByName('RoomInfo');
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  var s='<style>.ttl{color:blue;}</style>';
  for(var i=1;i<rngA.length;i++)
  {
    if(rngA[i][6]=='Yes')
    {
      s+='<br />' + '<span class="ttl">' + rngA[0][0] + '</span>' + ' = ' + rngA[i][0] + '    ' + '<span class="ttl">' + rngA[0][4] + '</span>' + ' = ' + rngA[i][4] + '    ' + '<span class="ttl">' + rngA[0][3] + '</span>' + ' = ' + rngA[i][3];
    }
  }
  var html=HtmlService.createHtmlOutput(s).setWidth(600).setHeight(500);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Values Found')
}
函数dispSummary()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sht=ss.getSheetByName('RoomInfo');
var rng=sht.getDataRange();
var rngA=rng.getValues();
var s='.ttl{color:blue;}';

对于(var i=1;我只是想让你知道,我们中的一些人不会访问非谷歌链接的链接,我也是其中之一。你是如何从六个链接中挑出三个的。他们是房间领导者吗?是的,对不起,当我尝试嵌入图像时,StackOverflow只允许我嵌入链接。我猜声誉不够。也是的,这是由房间领导者提供的。哦,这确实有效,但可能会想进一步澄清(或者我只是不知道如何正确执行).所以我在脚本编辑器中尝试了这一点,当我点击“执行”按钮时,它确实起了作用。但我更希望它能在实际的工作表中工作,因为它将从移动设备上运行。这是可以做到的吗?还是我必须采用不同的方法?我添加了输出工作表解决方案just now。我刚才给了你一些选项。但是你可以看到代码几乎是一样的。你需要注意的唯一一件事是确保输出值数组和输出域大小必须相同。你可以通过将输出范围设置为输出值数组的维度来做到这一点。@BrianSuk I添加了几种不同的方式来显示数据。两种方式使用对话框,两种方式使用表格。希望其中一种方式接近您的需要。啊,太棒了,您关于插入其他表格的建议可能会是赢家,这将是一个机会!不过,还有一个问题,有没有办法也包括格式?何时函数替换数据它似乎总是重置格式,并且有很多颜色和文本格式。是否有应用程序脚本函数(或一组函数)这可能会有帮助吗?是的,你可以通过应用程序脚本设置格式。请查看此处。我必须承认,这不是我通常关心的事情,因此我不会对其进行太多处理。如果数据可读且可绘制图表,那么这对我来说就足够了。但你可能想问另一个问题,让其他人参与解决方案离子。
function dispSummary()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht=ss.getSheetByName('RoomInfo');
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  var s='<style>.ttl{color:blue;}</style><table>';
  for(var i=1;i<rngA.length;i++)
  {
    if(rngA[i][6]=='Yes')
    {
      s+='<tr><td>' + '<span class="ttl">' + rngA[0][0] + '</span>' + ' = ' + rngA[i][0] + '</td><td>' + '<span class="ttl">' + rngA[0][4] + '</span>' + ' = ' + rngA[i][4] + '</td><td>' + '<span class="ttl">' + rngA[0][3] + '</span>' + ' = ' + rngA[i][3] + '</td></tr>';
    }
  }
  s+='</table>';
  var html=HtmlService.createHtmlOutput(s).setWidth(600).setHeight(500);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Values Found')
}
function dispSummary()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht=ss.getSheetByName('RoomInfo');
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  var sumsht = ss.getSheetByName('Summary')
  var sumA = [];
  for(var i=1;i<rngA.length;i++)
  {
    if(rngA[i][6]=='Yes')
    {
      sumA.push( [rngA[0][0],rngA[i][0],rngA[0][4],rngA[i][4],rngA[0][3],rngA[i][3]]); 
    }
  }
  var sumrng = sumsht.getRange(1,1,sumA.length,sumA[0].length);
  sumrng.setValues(sumA);
}
function dispSummary()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht=ss.getSheetByName('RoomInfo');
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  var sumsht = ss.getSheetByName('Summary')
  var sumA = [];
  sumA.push( [rngA[0][0],rngA[0][4],rngA[0][3]]);
  for(var i=1;i<rngA.length;i++)
  {
    if(rngA[i][6]=='Yes')
    {
      sumA.push( [rngA[i][0],rngA[i][4],rngA[i][3]]); 
    }
  }
  var sumrng = sumsht.getRange(1,1,sumA.length,sumA[0].length);
  sumrng.setValues(sumA);
  sumsht.activate();//you could add this if you want to go to the summary sheet immediately after the script completes.
}