如何使用按钮从一个谷歌工作表复制到另一个

时间:2021-04-25 05:46:44

标签: google-apps-script google-sheets

我用excel做了这个,但不能在线使用。所以我在谷歌表格中制作了它,但它不起作用。我想做的事: 数据(仅值,无格式)从工作表 Tmrw 范围 C3:Y20 复制到工作表今天范围 C3:y20,然后清除工作表 Tmrw 范围 C3:Y20 中的数据 我使用了这个代码:

  0       -2
 -2        0
  0        2
  2        0
  0       -2
 -0.5     -0.5
  0.5     -0.5
  0.5      0.5
 -0.5      0.5
 -0.5     -0.5

它不起作用。我并不感到惊讶。

文件在这里: https://docs.google.com/spreadsheets/d/11uyaRe7khP9PywXKkEh5e5xWLvm68Nw58R6dHkaTxvk/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

修改点:

  • getRange 为 Class Spreadsheet 时,您可以将工作表名称包含到 A1Notation 中。
    • 在这种情况下,可以使用 ss.getRange("'Today'!C3:Y20") 代替 ss.getSheetByName("Today");
  • "Tmrw"!C3:Y20""Today!C3:Y20 没有被 " 括起来。在这种情况下,请修改为 "Tmrw!C3:Y20""'Tmrw'!C3:Y20",以及 "Today!C3:Y20""'Today'!C3:Y20"
  • 在您的情况下,我认为 Class Range 的 copyTo 的参数是 copyTo(destination)

当以上几点反映到你的脚本中时,它变成如下。

修改后的脚本:

function moveValuesOnly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange("'Tmrw'!C3:Y20");
  var destRange = ss.getRange("'Today'!C3:Y20");
  source.copyTo(destRange);
  source.clear();
}

注意:

  • 当您想使用 getSheetByName 时,您还可以按如下方式修改您的脚本。

      function moveValuesOnly() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var srcSheet = ss.getSheetByName("Tmrw");
        var source = srcSheet.getRange("C3:Y20");
        var dstSheet = ss.getSheetByName("Today");
        var destRange = dstSheet.getRange("C3:Y20");
        source.copyTo(destRange);
        source.clear();
      }
    

参考: