首页 > 解决方案 > 谷歌脚本复制和粘贴

问题描述

我试图将多个单元格值复制并粘贴到工作表上的另一个单元格。基本上,如果我编辑单元格“AM13”,它应该将它的旧值复制到“C23”。这部分工作正常,但另一个单元格“N12”没有复制和粘贴到单元格“C25”上。

这是我现在的代码:

function onEdit(e) {
if (e.range.getA1Notation() === 'AM13') {
var wspaste = e.source.getRange('Sheet1!C24');
var wspaste2 = e.source.getA1Notation().getRange('Sheet1!N12');
var wspaste3  = e.source.getActiveSheet().getRange('Sheet1!N12').getValue();
var OLDVALUE;
OLDVALUE = e.oldValue;
wspaste.setValue(OLDVALUE);
wspaste2.setValue(wspaste3);
}
}

是我的工作表的副本!

谢谢您的帮助!

标签: google-apps-scriptgoogle-sheets

解决方案


您正在使用合并的单元格。这使得很难判断你想从哪里获得价值以及从哪里获得价值。

可能你需要这样的东西:

function onEdit(e) {
  if (e.range.getA1Notation() === 'AM13') {

    e.source.getActiveSheet().getRange('Sheet1!C24').setValue(e.oldValue);

    var value = e.source.getActiveSheet().getRange('Sheet1!N13').getValue();
    e.source.getActiveSheet().getRange('Sheet1!C25').setValue(value);

  }
}

要调试onEdit()功能,我习惯使用SpreadsheetApp.getActiveSpreadsheet().toast(value)wherevalue是您要检查的任何值。它几乎像console.log()Logger.log()

例如显示内容e.range.getA1Notation()

SpreadsheetApp.getActiveSpreadsheet().toast(e.range.getA1Notation())

它将在右下角显示带有值的窗口:

在此处输入图像描述


推荐阅读