每次更新另一个时,将值粘贴到新单元格中?

时间:2015-10-22 09:29:28

标签: google-apps-script google-sheets google-spreadsheet-api

我希望每周都有2个单元更新它们的值。每次这些单元格更新其值时,我希望它们也可以打印到另一张纸上的另外两个单元格上。每周他们印刷的这些细胞向下移动一个。例如第1周,两个单元格以A1和B1打印。第2周,它们以A2和B2打印,依此类推。

我知道如何在Excel中执行此操作但不知道如何将其更改为Google表格/脚本。

1 个答案:

答案 0 :(得分:1)

假设:

  1. 您的新输入位于input!A1input!B1;和
  2. 您的输出将在output!Aoutput!B
  3. 您可以通过单击菜单上的“工具”并输入“脚本编辑器”来编写脚本。

    然后写下这个函数:

    function writeData() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var input = ss.getSheetByName("input")
        .getRange(1, 1, 1, 2)
        .getValues();
      var outputSheet = ss.getSheetByName("output");
      var numRows = outputSheet.getLastRow();
    
      outputSheet.getRange(numRows + 1, 1)
        .setValue(input[0][0]);
      outputSheet.getRange(numRows + 1, 2)
        .setValue(input[0][1]);
    }
    

    接下来,设置一个触发器。在“脚本编辑器”中的“资源”下,选择“当前项目的触发器”,然后设置触发器。如果您希望每周运行一次,请使用时间驱动的触发器。您还可以设置电子表格驱动的触发器,以便在每次编辑时运行。保存一切。

    如果您不想使用自动触发器,可以通过在电子表格的菜单栏上添加项目来执行writeData()功能:

    function onOpen() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var menuEntries = [];
      menuEntries.push({name: "Write data", functionName: "writeData"});
      ss.addMenu("Custom functions", menuEntries);
    }
    

    保存,如果您刷新电子表格,则会在菜单栏上看到新项目。