如何自动将数据从一个google工作表移动到另一个

时间:2017-12-05 22:52:32

标签: firebase google-apps-script firebase-realtime-database google-sheets content-management-system

我正在尝试将Google表格中的值发送到Firebase,以便数据表自动更新。为此,我使用Google Drive CMS将数据完美导出到Firebase。问题是我从网站上删除了数据。例如,我通过使用importXML得到了一个数据列表:

=IMPORTXML("https://www.congress.gov/search?q=%7B%22source%22%3A%22legislation%22%7D", "//li[@class='expanded']/span[@class='result-heading']/a[1]")

CMS似乎无法获得此公式产生的值,但实际公式会导致错误。我解决这个问题的方法是创建一个包含公式的新选项卡,并使CMS选项卡仅保留值。我一直在手动复制和粘贴,但希望自动完成该过程。我找不到任何帮助来制作一个脚本,从一个标签中获取公式的值,并将这些值放在不同的表格中。

以下是一些参考图片:

Data with formula Data without formula Data sent to Firebase

*我将蓝色突出显示在我为谷歌工作表提到的单元格上,而来自firebase的数据显示了导出的第一行数据。

1 个答案:

答案 0 :(得分:1)

这个示例脚本怎么样?请将此视为几个答案之一。该脚本的流程如下。使用此脚本时,请复制并粘贴该脚本并运行sample()

流程:

  1. 输入有效工作表的来源范围。
  2. 检索源范围。
  3. 输入目标电子表格的目的地范围。
  4. 检索目标工作表的目标范围。
  5. 将数据从源范围复制到目标范围。
    • 复制包含值,公式和格式的数据。
  6. 示例脚本:

    function sample() {
      // Source
      var range = "a1:b5"; // Source range
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var srcrange = ss.getActiveSheet().getRange(range);
    
      // Destination
      var range = "c1:d5"; // Destination range,
      var dstid = "### file id ###"; // Destination spreadsheet ID
      var dst = "### sheet name ###"; // Destination sheet name
      var dstrange = SpreadsheetApp.openById(dstid).getSheetByName(dst).getRange(range);
    
      var dstSS = dstrange.getSheet().getParent();
      var copiedsheet = srcrange.getSheet().copyTo(dstSS);
      copiedsheet.getRange(srcrange.getA1Notation()).copyTo(dstrange);
      dstSS.deleteSheet(copiedsheet);
    }
    

    如果我误解了你的问题,我很抱歉。

    编辑:

    此示例脚本从源电子表格的值复制到目标电子表格。

    function sample() {
      // Source
      var range = "a1:b5"; // Source range
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var srcrange = ss.getActiveSheet().getRange(range);
    
      // Destination
      var range = "c1:d5"; // Destination range,
      var dstid = "### file id ###"; // Destination spreadsheet ID
      var dst = "### sheet name ###"; // Destination sheet name
      var dstrange = SpreadsheetApp.openById(dstid).getSheetByName(dst).getRange(range);
    
      var dstSS = dstrange.getSheet().getParent();
      var sourceValues = srcrange.getValues();
      dstrange.setValues(sourceValues);
    }