Google表格过滤脚本

时间:2018-04-05 21:11:11

标签: function google-apps-script filter google-sheets

我希望有人可以帮助我,我在过去的几天里一直在做很多搜索并且没有找到解决方案。可能与我缺乏编码知识有关......我知道这很危险,只是不够有效或高效!

首先,这是我的目标。

  • 创建一个文档,其中包含我的营销团队的任务“主列表”。
  • 每个团队成员(目前为4个)都有自己的标签,只显示分配给他们姓名的任务。在“已完成”和“已取消”列下都有空格......
  • 除了团队成员标签之外,还有另外两个,“已完成”和“已取消”。这些选项卡将包含任何团队成员在相应列下具有日期的任何任务。

目前,我设法创建了一个脚本,该脚本将删除所有选项卡(主列表除外)并使用指定的名称重新创建它们。我无法做的是让每张纸过滤结果。我似乎无法获得我在论坛中找到的任何代码。什么都不会在任何选项卡上自动过滤结果,它只复制主列表并重命名选项卡。有人能指出我正确的方向吗?

我能以最有效的方式解决这个问题吗?我是否需要一个可以在命令中运行脚本的按钮? “团队成员”工作表是否有办法根据输入主列表的内容进行实时更新?我试图利用这些信息(Filter data by column K in Google Script Editor (Google Sheets)),但无法在我的文档中使其发挥作用。

对于冗长的帖子感到抱歉,提前感谢所有帮助!

原始档案的副本: https://docs.google.com/spreadsheets/d/141JochDYmt9RHRnyaY2iIoyAISCNNXFVUvEtJlBwtiQ/edit?usp=sharing

代码示例:

function RunFilters() {

  var name = "Adam";

  /*ADAM*/

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName('Marketing').copyTo(ss);

  /* Before cloning the sheet, delete any previous copy */
  var old_name = ss.getSheetByName(name);
  if (old_name) ss.deleteSheet(old_name); // or old.setName(new Name);

  SpreadsheetApp.flush();
  sheet.setName(name);

  /* Make the new sheet active */
  ss.setActiveSheet(sheet);

      function myFunction() {
          var ss = SpreadsheetApp.getSheetByName('Marketing'); //replace with source Sheet tab name
          var range = ss.getRange('A:I'); //assign the range you want to copy
          var data = range.getValues();

          var tss = SpreadsheetApp.getActiveSpreadsheet(); //replace with destination ID
          var ts = tss.getSheetByName('Adam'); //replace with destination Sheet tab name
          ts.getRange(ts.getLastRow() + 1, 1, data.length, data[0].length).setValues(data);

          var range = ts.getRange(ts.getLastRow() + 1, 1, data.length, data[0].length)
          var rawData = range.getValues()     // get value from spreadsheet 2
          var data = []                       // Filtered Data will be stored in this array

          for (var i = 0; i < rawData.length; i++) {
               if(rawData[i][5] == "Adam")            // Check to see if column K says ipad if not skip it
                    {
                        data.push(rawData[i])
      }
    }
  }
}

0 个答案:

没有答案