如何自动将数据从一个 google sheet 移动到另一个

How to automate moving data from one google sheet to another

我正在尝试将 Google sheet 中的值发送到 Firebase,以便数据 table 自动更新。为此,我使用了 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 选项卡仅包含值。我一直在手动复制和粘贴这个,但想让这个过程自动化。我找不到任何帮助来制作一个脚本,该脚本从一个选项卡中获取公式的值并将这些值放在不同的 sheet.

以下图片供参考:

*我将蓝色高亮显示在 google sheet 所指的单元格上,firebase 中的数据显示导出的第一行数据。

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

流量:

  1. 输入活动源范围sheet。
  2. 检索源范围。
  3. 输入目标价差的目标范围sheet。
  4. 检索目的地的目的地范围sheet。
  5. 将数据从源范围复制到目标范围。
    • 复制包含值、公式和格式的数据。

示例脚本:

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);
}

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

编辑:

此示例脚本从源价差sheet 的值复制到目标价差sheet。

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);
}