Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将特定单元格数据从图纸传输到图纸_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 将特定单元格数据从图纸传输到图纸

Javascript 将特定单元格数据从图纸传输到图纸,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个问题,我需要将单元格数据从一张表传输到另一张表。我最终想要实现的是,如果我点击一个按钮,它会将我的数据从一张工作表导入到我当前使用的工作表中 我的原始代码如下所示: 函数C2(){ var sourceSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“C2”); var destSheet=SpreadsheetApp.getActiveSpreadsheet() sourceSheet.getRange(“A1:I4

我有一个问题,我需要将单元格数据从一张表传输到另一张表。我最终想要实现的是,如果我点击一个按钮,它会将我的数据从一张工作表导入到我当前使用的工作表中

我的原始代码如下所示:

函数C2(){
var sourceSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“C2”);
var destSheet=SpreadsheetApp.getActiveSpreadsheet()
sourceSheet.getRange(“A1:I43”).copyTo(destSheet.getRange(“A1:I43”),{contentsOnly:true});
}
但这对我所做的新修改不起作用。它将删除下一页单元格中的公式,并用公式生成的上一页的值替换它们

我尝试使用这个公式,选择所有我想传输的区域,但它会导致“未找到范围”错误消息

函数C1(){
var sourceSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“C1”);
var destSheet=SpreadsheetApp.getActiveSpreadsheet()
sourceSheet.getRange(“A2,A4:B16,A21,A23,A25,A27,D3:D22,E4:E22,F3:H22,C24,C26:E31,F25,L1”).copyTo(destSheet.getRange(“A2,A4:B16,A21,A23,A25,A27,D3:D22,E4:E22,F3:H22,C24,C26:E31,F25,L1”),{contentsOnly:true});
}
如果可以挑选我需要的细胞,并将它们转移到我想要的纸上,而不是只使用广泛的范围(例如“A1:I43”),那将是理想的。非常感谢您提供的所有帮助。

您需要定义并遍历所有包含的范围。 如果您只想复制值,并且将是对您有用的方法:

function myFunction() {
  var spreadsheet=SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("C2");
  var destSheet  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var rangeList=sourceSheet.getRangeList(["A2","A4:B16","A21","A23","A25","A27","D3:D22","E4:E22","F3:H22","C24","C26:E31","F25","L1"]);
  var rangeList2=destSheet.getRangeList(["A2","A4:B16","A21","A23","A25","A27","D3:D22","E4:E22","F3:H22","C24","C26:E31","F25","L1"]); 
  for (var i=0;i<rangeList.getRanges().length;i++){
       rangeList2.getRanges()[i].setValues(rangeList.getRanges()[i].getValues());
  }
}
函数myFunction(){
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“C2”);
var destSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
var rangeList=sourceSheet.getRangeList([“A2”、“A4:B16”、“A21”、“A23”、“A25”、“A27”、“D3:D22”、“E4:E22”、“F3:H22”、“C24”、“C26:E31”、“F25”、“L1”);
var rangeList2=destSheet.getRangeList([“A2”、“A4:B16”、“A21”、“A23”、“A25”、“A27”、“D3:D22”、“E4:E22”、“F3:H22”、“C24”、“C26:E31”、“F25”、“L1”);

对于(var i=0;这很好,但是如果可能的话,脚本能否将数据导入当前正在查看的工作表中。例如,我在30张工作表中的每一张上都有一个脚本按钮。如果我在工作表10上,并且我想导入工作表20,我会按标记为“20”的按钮这可能吗?当然可以。只要通过
getActiveSheet()
替换
getSheetByName(“Sheet1”)