当前位置: 首页 > 知识库问答 >
问题:

GoogleApps脚本将一列复制到一个工作表中,将其转置,然后粘贴到另一个工作表中

岳茂
2023-03-14

我在表单模板中设置了一张表单,在a列中有数据提示,如姓名、ID#等,在B列中输入了实际数据。我创建了一个标记为“提交表单”的按钮,该按钮链接到脚本。我希望这个脚本实现的是只复制列B中特定范围的数据,然后将该数据粘贴到新工作表中的下一个空行中,以创建表单响应的某种数据库。它还将清除原始工作表B列中的数据范围。

我已经有一种方法可以清除原始工作表上的选定范围,也有一种方法可以将选定范围复制到新工作表,同时自动从第一个空行开始。然而,我在转换数据时遇到了麻烦,因为它像原始数据一样粘贴到列中,而不是粘贴到行中。

function submitForm() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet1 = ss.getSheetByName("RMA");
    var sheet2 = ss.getSheetByName('RMA Database');
    var values = sheet2.getRange("A:A").getValues();
    var maxIndex = values.reduce(function(maxIndex, row, index) {
        return row[0] === "" ? maxIndex : index;
}, 0);
    sheet2.setActiveRange(sheet2.getRange(maxIndex + 2, 1))


sheet1.getRange("B5:B25").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1), 
{contentsOnly:true});

    sheet1.getRange('B5:B25').clearContent();

}

共有1个答案

柳绪
2023-03-14

试试这个:

我看不出这行的意义var values=sheet2。getRange(“A:A”)。getValues() 所以我省略了它

function runOne() {
  var ss = SpreadsheetApp.getActive();
  var sheet1 = ss.getSheetByName("RMA");
  var sheet2 = ss.getSheetByName('RMA Database');
  var vA=sheet1.getRange("B5:B25").getValues().map(function(r){return r[0]});
  sheet2.appendRow(vA);
  sheet1.getRange('B5:B25').clearContent();
}

 类似资料: