Google apps script 将单元格范围复制到其他电子表格中的特定区域

Google apps script 将单元格范围复制到其他电子表格中的特定区域,google-apps-script,Google Apps Script,我正在尝试将一系列数据复制到另一个电子表格中的新范围。我能够从引用模板中读取所需的行数和列数,但我无法将数据复制到新范围,它只是复制空白 function getTemplateName(){ //Retrieves the template file and opens it to retrieve templates var getTemplateFile = DriveApp.getFilesByName('Evaluation Templates') while (getTe

我正在尝试将一系列数据复制到另一个电子表格中的新范围。我能够从引用模板中读取所需的行数和列数,但我无法将数据复制到新范围,它只是复制空白

function getTemplateName(){
  //Retrieves the template file and opens it to retrieve templates
  var getTemplateFile = DriveApp.getFilesByName('Evaluation Templates')
  while (getTemplateFile.hasNext())
  var openTemplates = getTemplateFile.next()
  var templateId = openTemplates.getId()
  var openSpreadsheet = SpreadsheetApp.openById(templateId)
  var listTemplates = openSpreadsheet.getSheets().valueOf()

  //pushes all sheets from evaluation templates to a new array to be referenced by the menu
  var templateArray = new Array()
  var templateNames = openSpreadsheet.getSheets();
  for (var i=0 ; i < templateNames.length ; i++) templateArray.push( [ templateNames[i].getName() ] )

  //Retrieves the template sheet tab by the name selected in the menu
  var getTemplateSheet = openSpreadsheet.getSheetByName('Shoulder')
  var getObjectiveData = getTemplateSheet.getDataRange().getValues()
  Logger.log(getObjectiveData)
  //Counts the rows in the template sheet
  var countRows = getTemplateSheet.getMaxRows()
  var countColumns = getTemplateSheet.getMaxColumns()
  Logger.log(countRows)
  Logger.log(countColumns)
  //Gets row number of 'Objective' 
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Evaluation')
  var objectiveLine = sheet.getDataRange().getValues()

  for (var i = 0; i < objectiveLine.length; i++){
  if (objectiveLine[i][0] == 'Objective'){
      //inserts the number of rows 
  sheet.insertRowsAfter(i+1, countRows)

  //copies template data to new active row
  var newdata = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(i, 1, countRows, 
  countColumns).setValues(getObjectiveData)
函数getTemplateName(){ //检索模板文件并将其打开以检索模板 var getTemplateFile=DriveApp.getFilesByName('评估模板') while(getTemplateFile.hasNext()) var openTemplates=getTemplateFile.next() var templateId=openTemplates.getId() var openSpreadsheet=SpreadsheetApp.openById(templateId) var listTemplates=openSpreadsheet.getSheets().valueOf() //将评估模板中的所有图纸推送到菜单要引用的新数组中 var templateArray=新数组() var templateNames=openSpreadsheet.getSheets(); 对于(var i=0;i 编辑:将上述代码更改为。设置仍显示空单元格的值。

  • 您的范围
    (i,1,countRows,countColumns)
    可能大于1个单元格大,但是使用
    setValue()
    您只能将值范围
    getObjectiveData
    的第一个值分配给此范围的每个单元格

  • 如果
    getObjectiveData
    的第一个值为空,则指定一个空数据范围


要将二维值范围指定给二维范围,需要使用该方法,而不是
getValue()
很抱歉,这是一个输入错误。我确实尝试过。setvalues和单元格保持为空。在这种情况下,请提供一份电子表格副本,以了解问题的来源-在没有看到数据的情况下很难进行故障排除。我通过获取数据范围的A1表示法,然后使用A1表示法的getRange,使代码正常工作。