复制粘贴脚本Google表格

时间:2017-09-25 18:25:37

标签: google-apps-script google-sheets macros

我为一家主要的汽车制造商工作,我需要一些谷歌工作表脚本的帮助我需要写(我假设脚本是前进的方向?)

我有一个google工作表文件,用于监控多个部门的问题和计划的改进。该工作簿有多个选项卡,我需要以某种方式复制和粘贴其中的数据。

我已经包含了一个示例文件来尝试并帮助解释它,这是一个非常复杂的文件来尝试解释...我会尽我所能。听起来我需要使用脚本,但我不熟悉使用脚本。

Link to Sheet

文件说明: 每周我将带有最新数据的表格更新到“主数据”表中,此表使用查询提供“电气”表。电子更新的部门所有者用他的行为和时间更新“电气输入”表。也进入“电气”表。 “电气”表格依次输入“改进数据”表格,该表格为图表提供信息。

它是这样排列的,所以当新的问题被添加并且订单改变时,评论会跟在“电气”表上,并且所有者只需要用他尚未完成的评论更新“电气输入”表

我想尝试做什么: 我希望能够运行一个脚本来过滤或提取电子表格中的任何内容#N / A(这意味着输入表中没有找到3个单元格组合)并复制并粘贴这些项目进入未填充的下一个可用行的“电输入”表。在实际文件中有多个depts,因此必须运行脚本的变体来覆盖不同的depts。

请问任何想法或解决方案?提前谢谢。

马特

2 个答案:

答案 0 :(得分:0)

这是一个简单的复制脚本,可帮助您入门。 copyTo记录在案here。其余命令可以在同一文档中找到。

在您完成了一些自己的脚本后,您会发现自己编写脚本要容易得多,而不是花费所有时间来复制脚本。

function copyPasteSelectedRows() 
{
    var ss=SpreadsheetApp.getActive();
    var sh1=ss.getSheetByName('Sheet2');
    var sh0=ss.getSheetByName('Sheet1');
    var rg0=sh0.getDataRange();
    var vA=rg0.getValues();
    for(var i=1;i<vA.length;i++)
    {
      if(vA[i][10]==1)//condition to meet to copy
      {
        var src=sh0.getRange(i+1,1,1,vA[i].length);//source range
        var tar=sh1.getRange(sh1.getLastRow() + 1,1,1,vA[i].length);//target range
        src.copyTo(tar);
      }
    }
}

这是Sheet1:

enter image description here

这是复制后的Sheet2:

enter image description here

答案 1 :(得分:0)

我已使用相关代码更新了您共享的spreadsheet 您可以通过Add Ons->Master Data Utils->Clean Up Keys菜单运行脚本。
菜单是在此脚本的OnOpen函数中创建的。

请注意,脚本可以使用以下几个要求。(已经在共享ss中处理过)

  1. 部门列表和详细信息有助于处理所有数据,如下所示。
  2. 应该有一个名为NamedRange的{​​{1}},它将在上面显示的表的左上角。
  3. enter image description here

    • Department_List - &gt; Column to Clean
      是我们用于搜索Action Summary
    • 的列
    • #N/A - &gt; Display Sheet Name
      Electrical的所在。
    • #N/A - &gt; Input Sheet Name
      是要更新的工作表名称。
    • Electricalinput - &gt; Copy Cols From(Disp) 将通过
    • 复制的列
    • 与d类似,但这是将sata复制到
      的地方 但目前代码没有使用它,只是粘贴到col B中的第一个可用单元格

    这是我尝试的代码,让我知道任何可以更容易使用的建议或更改。

    B:D