gpt4 book ai didi

javascript - 使用保存按钮在新工作表中自动复制数据

转载 作者:行者123 更新时间:2023-12-04 08:48:37 25 4
gpt4 key购买 nike

我在 MRF 表中有数据。用户填写“MRF”表中所需 Material 的详细信息。完成详细信息后,他单击“保存”按钮。通过点击保存按钮,在“MRF”表中输入的数据被复制到“MRF DATA”表中。它不能正常工作。每次用户单击“保存”按钮时,我都想复制 A2 行中的数据。
工作表的链接是:
https://docs.google.com/spreadsheets/d/18Y6k7iXh1LRjSnn3m0kxvGKR6-BhyOy_axhdk-ResXU/edit?usp=sharing
我正在使用的脚本是:

function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("MRF");
var pasteSheet = ss.getSheetByName("MRF DATA");

// get source range
var source = copySheet.getRange(10,1,100,6);
// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,1,12,2);

// copy values to destination range
source.copyTo(destination);

// clear source values
//source.clearContent();
}

最佳答案

问题:

  • 您在 中有公式A栏 MRF数据表和
    因此 pasteSheet.getLastRow()返回包含内容的最后一行
    即使它包含一个公式。

  • 解决方法:
    解决方法 1:
    您可以根据 的非空白元素计算最后一行A栏使用 filter()功能。
    function copyInfo() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var copySheet = ss.getSheetByName("MRF");
    var pasteSheet = ss.getSheetByName("MRF DATA");
    var pasteSheet_size=pasteSheet.getRange('A:A').getValues().filter(String).length;

    // get source range
    var source = copySheet.getRange(10,1,100,6);
    // get destination range
    var destination = pasteSheet.getRange(pasteSheet_size+1,1,12,2);

    // copy values to destination range
    source.copyTo(destination);

    // clear source values
    //source.clearContent();
    }
    解决方法 2:
    您可以清除 中的所有公式和单元格MRF数据表以确保 getLastRow()返回正确的数字作为包含内容的最后一行。
    推荐解决方案:
    您的代码获得源 的硬拷贝范围MRF 床单。如果将来该范围的大小发生变化,并且您获得不必要的内容(空下拉列表),这并不理想。
    我还假设您只想将源工作表的内容复制到目标工作表。因此,更好的主意是使用 source.copyTo(destination,{contentsOnly:true});getRange().setValues()但我会坚持你的方法。
    function copyInfo() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var copySheet = ss.getSheetByName("MRF");
    var pasteSheet = ss.getSheetByName("MRF DATA");

    var pasteSheet_size=pasteSheet.getRange('A:A').getValues().filter(String).length;
    var source_size=copySheet.getRange('A10:A').getValues().filter(String).length;

    // get source range
    var source = copySheet.getRange(10,1,source_size,6);
    // get destination range
    var destination = pasteSheet.getRange(pasteSheet_size+1,1,source_size,6);

    // copy values to destination range with copyTo
    source.copyTo(destination,{contentsOnly:true}); //copy only the values

    // copy values to destination range with setValues()
    // destination.setValues(source.getValues());

    // clear source values
    //source.clearContent();

    }

    关于javascript - 使用保存按钮在新工作表中自动复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64182725/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com