getRange 只取一个值 - Google Sheets

getRange takes only one value - Google Sheets

我想将范围 a21:ay21 复制到新的 sheet 但公式只复制第一个值 (a21)。

我受够了。谢谢!

function submitToDataBase() {
  var ss        = SpreadsheetApp.getActiveSpreadsheet();
  var formSS    = ss.getSheetByName("form"); //Form Sheet
  
  var datasheet = ss.getSheetByName("Data_Base"); //Data Sheet
  
  //Input Values
  var values = [[formSS.getRange("form!a21:ay21").getValues()]];
         
  datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 50).setValues(values);

}

这是命名范围吗?

var values = [[formSS.getRange("form!a21:ay21").getValues()]];

我会尝试从“form!a21:ay21”中删除表单,或者简单地使用命名范围以两种方式之一编写以下内容

var values = [[formSS.getRange("form").getValues()]];

var values = [[formSS.getRange("!a21:ay21").getValues()]];

我认为在您的脚本中,values 是一个 4 维数组。而且,a21:ay21 有 51 列。如果要使用getValuessetValues,下面的修改如何?

发件人:

var values = [[formSS.getRange("form!a21:ay21").getValues()]];
       
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 50).setValues(values);

收件人:

var values = formSS.getRange("form!a21:ay21").getValues(); // formSS.getRange("a21:ay21").getValues();
datasheet.getRange(datasheet.getLastRow() + 1, 1, 1, 51).setValues(values);
  • 作为另一种方法,我认为在你的情况下,你可以使用appendRow如下。

      var ss        = SpreadsheetApp.getActiveSpreadsheet();
      var formSS    = ss.getSheetByName("form"); //Form Sheet
      var datasheet = ss.getSheetByName("Data_Base"); //Data Sheet
      var values = formSS.getRange("form!a21:ay21").getValues(); // formSS.getRange("a21:ay21").getValues();
      datasheet.appendRow(values[0]);
    
  • 作为另一种方法,我认为在您的情况下,您可以使用 copyTo of Class 范围如下。

      var ss        = SpreadsheetApp.getActiveSpreadsheet();
      var formSS    = ss.getSheetByName("form"); //Form Sheet
      var datasheet = ss.getSheetByName("Data_Base"); //Data Sheet
      formSS.getRange("a21:ay21").copyTo(datasheet.getRange(datasheet.getLastRow() + 1, 1), { contentsOnly: true });
    

参考文献: