【问题标题】:getlastrow, then last column, and then populate based on that informationgetlastrow,然后是最后一列,然后根据该信息进行填充
【发布时间】:2021-07-10 02:03:03
【问题描述】:

最近有一个名为 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,1,1,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);
  }
}

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

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

【问题讨论】:

    标签: javascript if-statement google-apps-script google-sheets bottom


    【解决方案1】:

    我相信你的目标如下。

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

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

    发件人:

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

    收件人:

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

    注意:

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

    参考资料:

    【讨论】:

    • 是的!按预期工作,现在我可以处理接下来的事情了!
    • @Kuukuu Omoi 感谢您的回复和测试。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 2019-08-28
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多