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 列。如果要使用getValues
和setValues
,下面的修改如何?
发件人:
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 });
参考文献:
我想将范围 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 列。如果要使用getValues
和setValues
,下面的修改如何?
发件人:
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 });