如何在一个电子表格中添加数据,制作数据库,另一个更新/覆盖?

时间:2017-05-29 07:17:18

标签: google-apps-script google-sheets

每天,我收到一张包含两个数据标签的电子表格。每个都有大约9千行。我需要从这个工作表中捕获数据并生成两个新的电子表格,其中一个用于“每日报告”(仅包含当天的数据),另一个用于创建“数据库”(所有数据都包含以前的结果)。如何使用GAS自动执行此操作?

在这个项目上工作我已经可以从我收到的电子表格中提取数据并生成包含它的数据的电子表格,但我想自动执行以下过程:

  1. 使用当天的数据(上次更新)生成“每日”电子表格。在这种情况下,新数据必须订阅最后的数据。
  2. 生成包含所有数据的电子表格“数据库”,在这种情况下,新数据必须在最后一行递增,并将存储以前的所有数据。
  3. 在这个项目中工作,我创建了这个代码,但我不知道如何做这些事情,如果有人能帮助我,我真的很感激!

    function getDay() {
      var day = SpreadsheetApp.openById('xxxxxx');
      var tab1 = day.getSheets()[0];
      var tab2 = day.getSheets()[1];
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sss = ss.getSheets()[0];
    
      var weeks = tab1.getRange("G8").getValues();
      var dates = tab1.getRange("G9").getValues();
      var regions = tab1.getRange('A10:A').getValues(); 
      var locnames = tab1.getRange('B10:B').getValues();
      var locnums = tab1.getRange('C10:C').getValues();
      var divisions = tab1.getRange('D10:D').getValues();
      var depnums = tab1.getRange('E10:E').getValues();
      var depnames = tab1.getRange('F10:F').getValues();
      var saless = tab1.getRange('G10:G').getValues();
      var qtys = tab2.getRange('G10:G').getValues();
    
      var datestart = sss.getRange('A2').setValues(dates);
      var dateend = sss.getRange('B2').setValues(dates);
      var week = sss.getRange('C2').setValues(weeks);
      var regions = sss.getRange(2,4,regions.length,regions[0].length).setValues(regions);
      var locname = sss.getRange(2,5,locnames.length,locnames[0].length).setValues(locnames);
      var locnum = sss.getRange(2,6,locnums.length,locnums[0].length).setValues(locnums);
      var division = sss.getRange(2,7,divisions.length,divisions[0].length).setValues(divisions);
      var depnum = sss.getRange(2,8,depnums.length,depnums[0].length).setValues(depnums);
      var depname = sss.getRange(2,9,depnames.length,depnames[0].length).setValues(depnames);
      var sales = sss.getRange(2,10,saless.length,saless[0].length).setValues(saless);
      var qty = sss.getRange(2,11,qtys.length,qtys[0].length).setValues(qtys);
    
     }
    

    我在链接中放了一个电子表格来说明表单的格式以及我需要做什么。前两个选项卡与我得到的选项卡相同。在接下来的两个选项卡(daily_report,database)中是我想要与代码分开获得的工作表。 https://docs.google.com/spreadsheets/d/1_iz0oansAfINosV2qNoDG0QMNpGS1bp1AL5kJQztRtc/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

首先在数组[]中添加要放入一行的所有值。您可以使用sheet.appendRow(row)

将此行添加到所需的工作表中

对于每日需要,您可以添加一个触发器,每天使用小时钟图标运行您的程序。