【问题标题】:Google Sheets copy function谷歌表格复制功能
【发布时间】:2021-03-11 08:10:23
【问题描述】:

当我点击我在 New Inv Entry 中创建的 Save 按钮时,我创建了我在这篇文章中包含的这个功能,以将特定单元格从 New Inv Entry 表复制到 Invoices 表。我已经在 Invoices 表中手动输入了数据,但问题是当我尝试通过 New Inv Entry 输入新条目时,该函数仅将一个单元格粘贴到来自 New Inv Entry 的 Invoices 中并且没有粘贴到最后一行,只需替换其他条目。

如果有人帮助我解决问题,我将不胜感激。

谢谢

function copy() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s1 = ss.getSheetByName('New Inv Entry');
  var Properties = PropertiesService.getScriptProperties();
  var lastrow = Properties.getProperty('lastrow');
  if(lastrow==null) lastrow=1;
  else lastrow = parseInt(lastrow);
  Properties.setProperty('lastrow',(lastrow+1));
  var v = s1.getRange('C3:G11').getValue();
  ss.getSheetByName('Invoices').getRange('A:E' + lastrow).setValue(v);
};

【问题讨论】:

  • 您能更好地描述您面临的问题吗?如果您需要获取最后一行数据之后的行,为什么不使用getLastRow() 然后+1?

标签: excel function google-sheets google-sheets-formula


【解决方案1】:

尝试代替

Properties.setProperty('lastrow',(lastrow+1));

只是简单

lastrow = lastrow+1;

因为您并不想更改存储在PropertiesService 中的属性,而是您的本地变量lastrow

我假设 getValue()setValue() 仅适用于单个单元格。你应该改用copyTo

s1.getRange('C3:G11').copyTo(ss.getSheetByName('Invoices').getRange('A' + lastrow))

(请注意,目标范围不需要:E 部分,因为copyTo 无论如何都知道要复制的范围的大小。)

【讨论】:

    【解决方案2】:

    Sbnc.eu 感谢您的回复。你的回答给了我很多帮助,它保存了所有的细胞。我希望特定的单元格只保存在发票中。我试图在下面修改这个但没有成功。

    s1.getRange('C3', 'C5', 'C7', 'C9', 'C11:G11').copyTo(ss.getSheetByName('Invoices').getRange('A' + lastrow))
    

    除此之外,我已经在 Invoices 表中插入了大约 2.5k 个条目,但是当我点击保存按钮并根据您提供的修改执行该功能时,新条目会替换已插入的条目。

    【讨论】:

    • 我认为如果您还有其他问题,您应该将其作为另一个主题发布到 stackoverflow.com 上,否则问答模式会被破坏。话虽这么说,如果你想复制多个单独的范围,你应该一个接一个地复制它们,所以一个单独的复制命令用于C3,另一个用于C5等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2021-05-20
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多