首页 文章

Google电子表格 - 脚本,在特定时间将单元格从一张纸复制到另一张纸

提问于
浏览
0

我知道我可能会问同样的事情 . 但我尝试了不同答案的脚本(显然改变了单元格值),但我的问题有点不同 .

我需要在Google电子表格中制作一个脚本,以便在特定时间将单元格从一张工作表复制到另一张工作表(在同一文档中) .

我在下面附上图片,显示要从哪里复制的细胞 . 某些单元格在复制之前需要SUM公式 .

为方便起见,我还分享了谷歌表的副本 . https://docs.google.com/spreadsheet/ccc?key=0AlVSjrM0ckyLdEtiLVNuOVpwQ3BGdUgwU0VpcldKaFE&usp=sharing

图像:Sheet1和Sheet2 http://i59.tinypic.com/23jsu9x.jpg

1 回答

  • 2

    您可以更新 fromTo 数组以包含更多范围 . 脚本是相当不言自明的 . 设置触发器以每天运行 backup . 您可能希望将 GMT 更改为您的时区 .

    function backup() {
      var src = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Daily Report");
      var dst = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Monthly Production Report");
      var dstRow = getDstRow(dst);
    
      var fromTo = [["B26", 2],
                    ["C26", 3],
                    ["B29:B31", 4],
                    ["C29:C31", 5],
                    ["B34", 6],
                    ["C34", 7]];
    
      for (var i=0; i<fromTo.length; i++) {
        var r = fromTo[i];
        dst.getRange(dstRow, r[1]).setValue(src.getRange(r[0]).getValues().reduce(sum, 0));
      }
    }
    
    function getDstRow(dst) {
      var today = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd");
      Logger.log(today);
      for (var row=1; row<=dst.getLastRow(); row++) {
        Logger.log(dst.getRange(row,1).getValue());
    
        try {
          var d = Utilities.formatDate(dst.getRange(row, 1).getValue(), "GMT", "yyyy-MM-dd");
          if (d == today) {
            return row;
          }
        } catch (err) {}
      }
    }
    
    function sum(a,b) {
      return a + b;
    }
    

相关问题