【问题标题】:Google Apps Script Copying a column in one sheet, transposing it, then pasting to anotherGoogle Apps 脚本在一张纸上复制一列,转置,然后粘贴到另一张纸上
【发布时间】:2019-07-18 01:46:26
【问题描述】:

我有一张在表单模板中设置的工作表,在 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();

}

【问题讨论】:

  • 这条线有什么意义:var values = sheet2.getRange("A:A").getValues();
  • 您是否使用触发器运行此脚本?

标签: javascript google-apps-script


【解决方案1】:

试试这个:

我没有看到这条线 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();
}

【讨论】:

  • 没有具体说明,只是“Script submitForm遇到错误”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
相关资源
最近更新 更多