【问题标题】:How do I transfer assigned tasks in one sheet to another sheet?如何将一张工作表中的分配任务转移到另一张工作表?
【发布时间】:2018-12-01 09:15:23
【问题描述】:

好的,我知道 Google 表格中的脚本,尤其是 ImportRange 函数。但是,这不仅仅是一个简单的导入,因为必须满足一些条件。

就这样吧。 在一个 Google 表格文件中,我有 5 张表格。

表 1 包含任务和详细信息,在 A-P 列中指示(因此占用一整行)。根据 Q 列的数据验证选项中的指示,将任务分配给一个人。

同时,对于表格 2-5,它们是数据验证选项中每个人的表格。应将工作表 1 中的任务转移到工作表 2-5,具体取决于工作表 1 的 Q 列中分配的人员。

在工作过程 POV 中,这将是关于交通的。我应该在脚本编辑器中输入什么代码?

spreadsheet

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    这是一个可以构建的简单示例:

    function assignTask() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('Sheet1');
      var rg=sh.getDataRange();
      var vA=rg.getValues();
      var today=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy");
      for(var i=1;i<vA.length;i++){
        if(!vA[i][3]){
          var sht=ss.getSheetByName(vA[i][2]);
          if(sht){
            sht.appendRow([vA[i][0],today]);
          }else{
            var sht=ss.insertSheet(vA[i][2]);
            sht.appendRow(['Task','Date'])
            sht.appendRow([vA[i][0],today]);
          }
          vA[i][3]='Done';
          vA[i][1]=today;
        }
      }
      rg.setValues(vA);
    }
    

    电子表格如下所示:

    脚本运行后是这样的:

    如果此人的工作表不存在,它将创建它并在创建后将标题信息放入其中。如果存在,则该行仅附加到底部。已分配的任务在已分配列中已“完成”,并且在日期列中已分配日期。显然,你可以用它做很多其他事情,所以玩得开心。

    回答您的问题: 您的函数复制列。

    function copyColumns() {
      var srcSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Total"); 
      var desSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cooked"); 
      var cA = ['A','C','D','F']; 
      var pA = ['A','B','C','D']; 
      for(var i=0;i<cA.length;i++){
        srcSheet.getRange(cA[i] + ':' + cA[i]).copyTo(desSheet.getRange(pA[i] + ':' + pA[i]));
        //src colA to des colA, src colc to des colB,src colD to des colC,src colF to des colD 
      }
    }
    

    查看这些参考资料:

    1. Spreadsheet Range Class
    2. Spreadsheet Sheet Class

    【讨论】:

    • 感谢库珀!下面的代码是什么意思?函数 copySheet() { var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Total"); var destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cooked"); var columns_to_be_copied = ['A', 'C', 'D', 'F']; var columns_to_be_pasted = ['A', 'B', 'C', 'D'];对于(column_to_be_copied 中的列){ var copy_range_string = columns_to_be_copied[column] + ':' + columns_to_be_copied[column]; var paste_range_string = columns_to_be_pasted[column] + ':' + columns_to_be_pasted[column];
    • var source = sourceSheet.getRange(copy_range_string); var 目的地 = destSheet.getRange(paste_range_string);复制到(来源,目的地); } }
    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多