getlastrow,然后是最后一列,然后根据该信息进行填充 来自:致:注意:参考:

问题描述

最近有一个名为 Eddienuput (https://github.com/nirgoren/Eddienput) 的程序,它可以让您在训练模式下基本上针对任何事物进行正确训练。一个问题是你必须制作一个包含所有按钮按下的文本文件,以及每个按钮的时间。一旦这个文本文件被制作成一个预制的 Json 广告,并将输入输入到一个虚拟控制器中

可以在此处看到工作表的工作表 https://docs.google.com/spreadsheets/d/1HJ8PZ-zwsYDznvLleIozhg88K70ySXz0rF4fiU9uN4E/edit#gid=461565895

这里的想法是将字符的数据放在第二个选项卡上,然后在生成器表上选择所需的按钮,然后按 [>] 将其放在当前存储的按钮的右侧,然后你使用 [v] 按钮

但是,使用我当前的代码,发生了一些错误

当我点击向下箭头(我已将脚本分配给按钮)时,程序注册输入所需的三个条目将插入活动行下方的一行。

问题是右箭头。我有点正确(它将所需的三个输入放在右侧......但它没有找到右下角的条目并将其放在它的右侧,而是查找最远的右侧列并将其放入在所有内容的右侧,而不是在最后一行的最后一个单元格旁边。

这是我现在拥有的代码

function addbuttontoString()
{
  //DEFINE ALL ACTIVE SHEETS
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var eddGenSheet = ss.getSheetByName("Eddie Input Generator");
  var lrwithcontentofEddGenSheet = eddGenSheet.getLastRow()+1;
  var lcwithcontentofEddGenSheet = eddGenSheet.getLastColumn();

  var CharacterFrameDataSheet = ss.getSheetByName("CharacterFrameData");
  
  //Current string Variables 
  var totalcurrentstringRows = lrwithcontentofEddGenSheet-4;
  var fullcurrentString = eddGenSheet.getRange(5,1,totalcurrentstringRows,lcwithcontentofEddGenSheet);

  var cslastRow = fullcurrentString.getLastRow();
  var bottomrightcolumnNumber = eddGenSheet.getRange(lrwithcontentofEddGenSheet,lcwithcontentofEddGenSheet).getLastColumn();


Logger.log(bottomrightcolumnNumber)
  //GET LAST ROW #OF ITEM SHEET
  var lastrowItem = CharacterFrameDataSheet.getLastRow();
  
  // Get the perfect Eddie value from Character Frame Data you are grabbing data for
  var button = eddGenSheet.getRange('B4').getValue();
  
  // Set up the Perfect Frame Variable
  for(var i = 2; i <= lastrowItem; i++)
  {
    if(button == CharacterFrameDataSheet.getRange(i,1).getValue())
    {
      var Perfectframe = CharacterFrameDataSheet.getRange(i,4).getValue();
    }
  }
  Logger.log(fullcurrentString.isBlank());

  if(fullcurrentString.isBlank()){
  // POPULATE eddGen SHEET Same Line
  eddGenSheet.getRange("A5").setValue(button);
  eddGenSheet.getRange("B5").setValue("F");
  eddGenSheet.getRange("C5" ).setValue(Perfectframe);
  } else {
  eddGenSheet.getRange(lrwithcontentofEddGenSheet-1,bottomrightcolumnNumber +1).setValue(button);
  eddGenSheet.getRange(lrwithcontentofEddGenSheet-1,bottomrightcolumnNumber +2).setValue("W");
  eddGenSheet.getRange(lrwithcontentofEddGenSheet-1,bottomrightcolumnNumber +3).setValue(Perfectframe);
  }
}

我可能还有多余的代码,但我对整体编码还很陌生。

感谢任何可以提供帮助的人! (此代码还有更多内容,但我需要它来启动它)

解决方法

我相信你的目标如下。

  • 当您单击右箭头按钮时,您希望添加该行第 1 个空列中的值。

在您的脚本中,为了检索用于放置值的列的坐标,getLastColumn() 的用法如下。在这种情况下,不会检索该行的第一个空列。检索工作表的最后一列。那么,下面的修改怎么样?

来自:

var bottomrightcolumnNumber = eddGenSheet.getRange(lrwithcontentofEddGenSheet,1,lcwithcontentofEddGenSheet).getLastColumn();

致:

var bottomrightcolumnNumber = eddGenSheet.getRange(lrwithcontentofEddGenSheet - 1,1).getNextDataCell(SpreadsheetApp.Direction.NEXT).getColumn();
  • 在此修改中,使用 getNextDataCell() 检索第一个空列。

注意:

  • 我不确定您的实际情况。那么当上述修改对您的情况没有帮助时,您能否提供有关您实际情况的详细信息?为此,我想对其进行修改。

参考:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...