双向同步只复制已编辑的单元格,而不是整个工作表

时间:2015-05-14 01:28:01

标签: google-apps-script google-sheets sync

此脚本(当应用于工作表-A和B时)将在每次编辑单元格时同步两个工作表中的更改。我自己只是想知道这个问题的答案而不是学习Javascript。

但我想知道是否有更方便指定此过程的方法,以便仅将已编辑的特定单元格的内容(在表单A中)复制到另一个工作表(B)何时进行更改。与整个工作表相对。因此,如果我在工作表A,单元格D3中进行更改。只有那个单元格才会复制到表格B的D3上 - 而不是其他任何单元格。

while (KeepRunning)
{
    try
    {
        if (!finder.GetFile(processID, out file))
        {
            KeepRunning = false;
        }
    }
    catch (Exception ex)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("Error Message: {0}", ex.Message);
        Console.ResetColor();
    }
}

}

2 个答案:

答案 0 :(得分:0)

是的,可以做到,这就是应该做的事情。您的代码已使用getRange(),因此您就知道了。将要包含的列数和行数更改为1。因此,将thisData.getNumRows()更改为1.与thisData.getNumColumns()相同。摆脱它,并输入数字1.前两个参数现在是1,1你需要改变。第一个设置是起始行,第二个设置是起始列。如果您只复制一个单元格,则不需要使用带有四个参数的getRange()版本。有很多不同版本的getRange()并且有两种设置值的方法; setValue()setValues()。如果您只想设置一个单元格的值,请使用setValue() - (最后不是“s”)

答案 1 :(得分:0)

如果不是不可能通过触发器来处理所有情况并且它们通知的范围被更改,插入,移除或移动整个行和列(例如onChange)甚至是如何处理粘贴的晦涩难懂也是非常棘手的细胞。即使这样,如果使用api而不是表单进行更改,触发器也无法工作。应用。唯一的方法是从onEdit和onChange获取源和目标的全部,然后比较代码和数字中的两个数组的差异。香港专业教育学院之前为客户做过这个,但单向。因为它是双向的,所以当另一方计算差异时,可能无法阻止从一侧覆盖变更。因此你可能会丢失数据。您可以使用锁,但仍然可能失败并丢失数据。并且仍然不会涵盖用api更换纸张的情况。