繁体   English   中英

用于将多个工作表中的阵列复制到单个“状态摘要”表单上的Google Apps脚本

[英]Google Apps Script for copying an array from multiple sheets onto a single Status Summary sheet

我一直试图找到一个我可以复制的脚本用于我的目的(对我的特定工作表进行了一些修改),但没有什么是我需要它做的事情,我没有编写技巧从头开始编写。

我有一个包含多个工作表的Google电子表格,我们将不断添加新工作表,我们推出的每个新产品都有一个。 每个工作表(包括从模板创建的新工作表)都具有该产品的启动准备状态的“概览”摘要。 它始终位于每张纸上的M3:M10。

我有一个状态摘要表,我想在每张表中粘贴M3:M10中的信息。 这将使我们能够在发布之前快速查看每个产品的状态摘要,而无需我们检查每个特定工作表的选项卡。

这是我理想的情况:

  • 该脚本将遍历工作簿中包含的每个工作表,但跳过名为“状态摘要”的工作表。
  • 脚本将从每张表中的M3:M10中提取数据
  • 脚本将在“状态摘要”中存储M3:M10数据,在A2:H2(我的列标签为A1:H1)中组织信息。 例如:表1中的M3数据将存储在状态摘要A2中,表1上的M3数据将存入B2状态汇总等。
  • 脚本将自动为每个新工作表使用新行。 例如:工作表1上的M3数据将在状态摘要中的A2中,工作表2上的M3数据将在状态摘要中的A3中等。

我不需要包含的床单名称。

有人能为我写这个吗? 我正在尝试自学如何编写这些脚本的代码,因此对每个部分所做的一些“//”解释将是一个巨大的帮助。 谢谢你的期待!

尝试这个:

function atAGlance() {
  var ss=SpreadsheetApp.getActive();
  var excl=['Status Summary'];
  var sh=ss.getSheetByName('Status Summary');
  var shts=ss.getSheets();
  var n=1;
  for(var i=0;i<shts.length;i++) {
    if(excl.indexOf(shts[i].getName())==-1){
      var v1=shts[i].getRange("M3:M10").getValues();
      var v2=transpose(v1);
      sh.getRange(1 + n++,1,v2.length,v2[0].length).setValues(v2);
    }
  }
}
//https://stackoverflow.com/a/16705104/7215091
function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}

得到了来自转置[ https://stackoverflow.com/a/16705104/7215091] ( https://stackoverflow.com/a/16705104/7215091

此版本允许您从流程中排除工作表,您可以在testAtAGlance()函数中运行它,如下所示。 我使用的示例排除了“状态摘要”和“全局”。

function testAtAGlance() {
  atAGlance(['Status Summary','Globals']);
}

function atAGlance(excl) {
  var excl=excl || ['Status Summary'];
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Status Summary');
  var shts=ss.getSheets();
  var n=1;
  for(var i=0;i<shts.length;i++) {
    if(excl.indexOf(shts[i].getName())==-1){
      var v1=shts[i].getRange("M3:M10").getValues();
      var v2=transpose(v1);
      sh.getRange(1 + n++,1,v2.length,v2[0].length).setValues(v2);
    }
  }
}
//https://stackoverflow.com/a/16705104/7215091
function transpose(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM