首页 > 解决方案 > 如何使用按钮从一个谷歌工作表复制到另一个工作表

问题描述

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

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

这没用。我并不感到意外。

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

标签: google-apps-scriptgoogle-sheets

解决方案


修改点:

  • getRange使用 Class Spreadsheet 时,您可以在 A1Notation 中包含工作表名称。
    • 在这种情况下,ss.getRange("'Today'!C3:Y20")可以使用 代替ss.getSheetByName("Today");
  • "Tmrw"!C3:Y20"并且"Today!C3:Y20不被 包围"。在这种情况下,请修改为"Tmrw!C3:Y20"and "'Tmrw'!C3:Y20", and "Today!C3:Y20"and "'Today'!C3:Y20"
  • 在您的情况下,我认为copyToClass Range 的论点是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();
      }
    

参考:


推荐阅读