当特定条件为真时,将值从一个工作表复制到另一个工作表

时间:2016-12-19 18:50:58

标签: google-apps-script google-sheets

我绝对是初学者,面临以下问题。

我有一张2张电子表格,“tab1”和“tab2”

现在我想将范围或单元格中的a值从“tab1”复制到“tab2”,具体取决于A9中的条件

我尝试了以下脚本,但不管A9中的条件是否满足,它都会继续复制值。

我在这里做错了什么?

function copyIf() {
    source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tab1");
    var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tab2");

    var condition   = source.getRange('A9').getValue();

    if (condition == "mon") {
        source.getRange('A2').copyTo(destination.getRange('D11'));
      source.getRange('A5').copyTo(destination.getRange('D5'));
    }
}

大家好,感谢您的快速帮助,我很抱歉没有准确,我已经创建了一个新的示例表,并根据您提供的相应代码进行了调整。基本上它工作正常,但我仍然有一个小问题。

``function copyIf(){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName("tab1");
var destination = ss.getSheetByName("tab2");
var condition = source.getRange('A9').getValue();
if (condition == "mon") { 
source.getRange('B14').copyTo(destination.getRange('B5'));
source.getRange('B15').copyTo(destination.getRange('C5'));

} }

源范围B14和B15包含一个公式,用于总计E14:F14,E15:F15

的总和

目标是只要符合条件(Tab1,A9 = mon),就将B14和B15的值复制到第二张(tab2,B5和C5),否则不应更改任何内容

除了目标(tab2,B5和C5)反映公式而不是值

之外,这个工作正常

我确信这只是一个小问题,但无法弄清楚

Hier是测试表的链接:

https://docs.google.com/spreadsheets/d/12X4CPa6qbb2nRPqPthI0F0_fszaga4jTIQ6ouUjZ6Yk/edit?usp=sharing

1 个答案:

答案 0 :(得分:1)

首先,我认为您应该将google-app-script标记添加到此问题中。

我复制了你的代码,按你所描述的那样设置了一张表,将var添加到源变量声明中,它按你所说的那样工作。 "清洁"代码是:

function copyIf() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheetByName("tab1"); 
  var destination = ss.getSheetByName("tab2");
  var condition = source.getRange('A9').getValue();
  if (condition == "mon") {  
    source.getRange('A2').copyTo(destination.getRange('D11'));
    source.getRange('A5').copyTo(destination.getRange('D5'));
  } 
}

我还制作了一个名为ss的新变量,以便将您的API调用减少1(这里不是很重要,但是很好的做法)。

如果这不能解决您的问题,请修改您的原始帖子以包含更多信息,并可能提供指向虚拟电子表格的链接。

我会通过评论建议这一点,但不能以低于50的评论评论......