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,我需要复制这些值​​在某专栏的最后一行,我看到了这样的例子。。。但他们没有给我剧本。我的问题是,在A列中,我有五个值,而在B和C列中,我只有一个这样的值… abc 11 1--- 1--- 1--- 1--- 我想插入值​​在列B和C中,像这样… abc 11 12 12 1--- 1--- 但是我的脚本的问题是它像这样插入它们… abc 11 1--- 1--- 1--- 1--- -2 2 //This part its not important function last

我需要复制这些值​​在某专栏的最后一行,我看到了这样的例子。。。但他们没有给我剧本。我的问题是,在
A
列中,我有五个值,而在
B
C
列中,我只有一个这样的值…
abc

11

1---

1---

1---

1---

我想插入值​​在列
B
C
中,像这样…
abc

11

12

12

1---

1---

但是我的脚本的问题是它像这样插入它们…
abc

11

1---

1---

1---

1---

-2 2

    //This part its not important
    function last(){
    var ss = SpreadsheetApp.openById("ID");
    var ssh = ss.getSheetByName("Name")
    var Range = ssh.getRange("B1:C"); 
    var getVal   = Range.getValues();

    //This part its the important
    var ss = SpreadsheetApp.getActiveSpreadsheet();     
    var ssh = ss.getSheetByName("Sheet 1");
    var lastRow = ssh.getLastRow() + 1;
    var ssRange = ssh.getRange(lastRow , 2, getVal.length, getVal[0].length).setValues(getVal);
}  
我需要帮助,以便​​插入到正确的行中

编辑

这是我的剧本

 function last(){
  var ss = SpreadsheetApp.openById("ID");
  var name = ss.getSheetByName("NAMES");
  var lastRow = name.getLastRow();
  var range = name.getRange("A"+(lastRow)+":D"+(lastRow)); 
  var datas   = range.getValues();

  var actSs = SpreadsheetApp.getActiveSpreadsheet();     
  var sheetOne = actSs.getSheetByName("1");
  var ltRo = sheetOne.getLastRow();
  var startRow = null;
  var i = 0;
  while(i < datas.length)
 {
  if(datas[i][0]){
  startRow = i + 2;
  i++;
  }
  if (!i){
  startRow = 1;
  }
  var ssRange = sheetOne.getRange(startRow, 2, datas.length, 
   datas[0].length).setValues(datas);
  }
 }  
函数last(){
var ss=电子表格应用程序openById(“ID”);
var name=ss.getSheetByName(“名称”);
var lastRow=name.getLastRow();
var range=name.getRange(“A”+(lastRow)+“:D”+(lastRow));
var data=range.getValues();
var actSs=SpreadsheetApp.getActiveSpreadsheet();
var sheetOne=actSs.getSheetByName(“1”);
var ltRo=sheetOne.getLastRow();
var startRow=null;
var i=0;
而(i<数据长度)
{
如果(数据[i][0]){
startRow=i+2;
i++;
}
如果(!i){
startRow=1;
}
var ssRange=sheetOne.getRange(startRow,2,datas.length,
数据[0]。长度)。设置值(数据);
}
}  
这就是问题所在:

var lastRow = ssh.getLastRow() + 1;
您在电子表格中查找最后一行数据,即您的案例6。 使用
getValues()
获取数据数组,然后解析以查找列2中未找到数据的索引

并且做:

 var ssRange = ssh.getRange(foundIndex , 2, getVal.length, getVal[0].length).setValues(getVal);
例如:

function last(){
  var ss = SpreadsheetApp.openById("ID");
  var name = ss.getSheetByName("Name")
  var range = name.getRange("B1:C"); 
  var datas   = range.getValues();

  var actSs = SpreadsheetApp.getActiveSpreadsheet();     
  var sheetOne = actSs.getSheetByName("Sheet 1");
  var startRow = null;
  var i = 0;
  while(i < datas.length)
  {
    if(datas[i][0])
      startRow = i + 2;
    i++;
  }
  if (!i)
    startRow = 1;
  var ssRange = sheetOne.getRange(startRow , 2, datas.length, datas[0].length).setValues(datas);
函数last(){
var ss=电子表格应用程序openById(“ID”);
var name=ss.getSheetByName(“名称”)
var range=name.getRange(“B1:C”);
var data=range.getValues();
var actSs=SpreadsheetApp.getActiveSpreadsheet();
var sheetOne=actSs.getSheetByName(“表1”);
var startRow=null;
var i=0;
而(i<数据长度)
{
如果(数据[i][0])
startRow=i+2;
i++;
}
如果(!i)
startRow=1;
var ssRange=sheetOne.getRange(startRow,2,datas.length,datas[0].length).setValues(datas);

我以前使用的另一种方法是:


如何声明
foundIndex
的变量?我尝试使用
getValues()
但找不到创建foundIndex的方法。感谢您的帮助=D@LuisAvl我没有尝试代码,但尝试了类似的操作我遇到了下一个错误…
找不到getRange方法(null、number、number、number).
正在将变量
startRow
标记为null,但我不知道为什么。因为数据为空或数据[I][0]总是有数据等等刚刚编辑了代码请尝试创建一个测试电子表格并在注释中共享它这样我可以直接帮助你生活这会更容易谢谢你的帮助你好,谢谢你的帮助我。对于你刚刚帮助我的脚本,它给了我一个小错误,就是在它给我带来值的时候,我不知道为什么,但他几乎把它们放在了sheet.Grr的末尾。这不应该发生。当我在B列上使用
.getLastRow()
时,这种情况发生在我身上,但当我切换到这个方法时,它停止了。请确保你像@JSmith在回答中所做的那样,并更改你的变量名。你不应该有相同的变量名(ss,ssh)对于同一函数中的不同变量。该函数可能会混淆,并且从错误的位置获取数据。这可能是原因。我在代码中删除了ss和ssh变量的第一个实例。如果它有效,但只有在该列中没有任何值时才有效,但不,在例如,我之所以使用if,是因为我这么做很快就让我明白了,但同样地,我感谢你的帮助,我将继续尝试=DOk。我只是查看了你在@JSmith链接的工作表中的代码。问题是你仍然有
var ltRow=sheetOne.getLastRow()
在最后一行之前。删除它,它就可以正常工作。但是我在这个例子中遇到的问题是,如果我有空格,然后是值,就不要将它们插入正确的位置。我编辑电子表格,这样你就可以更好地看到我想说的内容。这又是一个空格
var ss = SpreadsheetApp.getActiveSpreadsheet();     
var ssh = ss.getSheetByName("Sheet 1");
    var Avals = ssh.getRange("B1:B").getValues();
    var Alast = Avals.filter(String).length;
    var ssRange = ssh.getRange(Alast +1 , 2, getVal.length, getVal[0].length).setValues(getVal);