Google apps script 将数据输入到特定列的最后一行,并使用“输入”;否则,如果;
我试图在谷歌表单中执行以下操作: 问题1: 单元格B2、B3和B4包含我要复制到C、D和E列最后一行的数据 下面的代码工作正常,它只获取工作表的最后一行,我无法将其定位到这些列Google apps script 将数据输入到特定列的最后一行,并使用“输入”;否则,如果;,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我试图在谷歌表单中执行以下操作: 问题1: 单元格B2、B3和B4包含我要复制到C、D和E列最后一行的数据 下面的代码工作正常,它只获取工作表的最后一行,我无法将其定位到这些列 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sinput = ss.getSheetByName("DEPOSITS_WITHDRAWLS"); var soutput = ss.getSheetByName("DEPO
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sinput = ss.getSheetByName("DEPOSITS_WITHDRAWLS");
var soutput = ss.getSheetByName("DEPOSITS_WITHDRAWLS");
var input = sinput.getRange(2, 2, 3).getValues();
sinput.getRange(3,2, 2).clear();
var flatin = [].concat.apply([], input);
soutput.getRange(soutput.getLastRow()+1, 3,1,3).setValues([flatin]);
soutput.insertRowAfter(soutput.getLastRow());
Logger.log(input);
问题2:
我在B1单元中做了一个下拉列表,其中有“选项1”和“选项2”
我想对它作一个假设。唯一的区别是,对于“选项1”,数据将转到C、D和E列的最后一行,对于“选项2”,数据将转到G、H和I列的最后一行。下面的代码看起来似乎可以工作,但我不太了解这种语言。是excel版的吗?不管怎样,我觉得这两种方法都很接近,但我完全不知道如何实现它们。非常感谢您的帮助。谢谢,祝你今天愉快
If optMemberName.Value = True Then
With Sheets("Sheet1")
Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Row) = txtMemberName.Text
End With
ElseIf optMemberID.Value = True Then
With Sheets("Sheet1")
Range("B" & .Cells(.Rows.Count, "B").End(xlUp).Row) = txtMemberID.Text
End With
End If
解释/问题:
- 对于第一个问题,我认为问题与
行有关。后者获取整个工作表中包含内容的最后一行。这意味着,如果工作表中包含内容的最后一行在A列中,例如在单元格soutput.getLastRow()
中,则上述表达式将为您提供A500
,无论最后一行的C、D或E是否不同。假设C、D和E具有相同的最后一行内容,您可以使用这种方法查找特定列的最后一行500
- 对于第二个问题,您发布的代码与javascript无关。您可以看到,您发布的两个代码段在结构和格式上有很大的不同。但逻辑是这样的。您需要一个
条件来检查单元格if
是否包含B1
或“选项1”
,并根据该值粘贴到相应的范围“选项2”
- 我还对你的代码进行了一些优化。由于
和sinput
涉及同一张精确的表,因此没有理由使用两个不同的变量。您只需使用一个并将其命名为soutput
。此外,我还看到了一些您在目标描述中没有描述的代码行。我删除了您清除某些值的行,并添加了额外的行。可以随意添加这些内容,但要尊重脚本的逻辑sheet
谢谢你的澄清。我很感激你的鼓励,现在代码对我来说很有意义。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("DEPOSITS_WITHDRAWLS");
var input = sheet.getRange(2, 2, 3).getValues().flat();
var option = sheet.getRange('B1').getValue();
if (option == 'Option 1'){
var Lrow = sheet.getRange('C:C').getValues().filter(String).length+1;
sheet.getRange(Lrow, 3,1,3).setValues([input]);
sheet.insertRowAfter(sheet.getLastRow());
}
else {
var Lrow = sheet.getRange('G:G').getValues().filter(String).length+1;
sheet.getRange(Lrow, 7,1,3).setValues([input]);
sheet.insertRowAfter(sheet.getLastRow());
}
}