【问题标题】:Is it possible to append to the next column horizontally in google sheets?是否可以在谷歌表格中水平附加到下一列?
【发布时间】:2020-04-12 18:53:11
【问题描述】:

我目前有这个脚本。我工作得很好,但是,如果每次选择附加时,我希望它水平附加到下一列。现在它附加在最后一行之后。请非常具体地说明需要更改的内容。谢谢!

function myFunction() {
  var ss = SpreadsheetApp.openById("1aACg8M89LLxILIvUqWT2ZnrykF8e3BkIiamj2NhKrmc")
  var sheet = ss.getSheetByName("Framsida");
  var data = sheet.getRange(2, 3, 25, 1).getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log(data[i][0]);
    Logger.log(data[i][1]);
  }
  var row= sheet.getLastRow();
 Logger.log(row);
 Logger.log(data);
   var temp = data
     for (i in temp){
       var write = temp[i]
       if (row >=10) {ss.getSheetByName("Archive").appendRow(write)};

     } 
   ss.getSheetByName("Framsida").getRange(2, 3, 25, 1).clear();

}

【问题讨论】:

    标签: javascript google-sheets google-api google-sheets-api google-data-api


    【解决方案1】:

    您想从工作表“Framsida”上的“C2:C26”单元格中检索值,并希望将值放入工作表“存档”上最后一列的下一列。

    要检索工作表的最后一列,请使用getLastColumn()。在这里,我想提出 2 种模式来实现您的目标。

    模式一:

    在此模式中,使用了getValuessetValues

    function myFunction() {
      var ss = SpreadsheetApp.openById("1aACg8M89LLxILIvUqWT2ZnrykF8e3BkIiamj2NhKrmc")
      var srcSheet = ss.getSheetByName("Framsida"); // <--- Modified
      var srcRange = srcSheet.getRange(2, 3, 25, 1);
      var data = srcRange.getValues();
      
      var dstSheet = ss.getSheetByName("Archive");
      dstSheet.getRange(2, dstSheet.getLastColumn() + 1, data.length, 1).setValues(data);
      
      srcRange.clear();
    }
    

    模式 2:

    在此模式中,使用copyTo

    function myFunction() {
      var ss = SpreadsheetApp.openById("1aACg8M89LLxILIvUqWT2ZnrykF8e3BkIiamj2NhKrmc")
      var srcSheet = ss.getSheetByName("Framsida"); // <--- Modified
      var srcRange = srcSheet.getRange(2, 3, 25, 1);
      
      var dstSheet = ss.getSheetByName("Archive");
      srcRange.copyTo(dstSheet.getRange(2, dstSheet.getLastColumn() + 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES);
      
      srcRange.clear();
    }
    
    • srcRange.copyTo(dstSheet.getRange(2, dstSheet.getLastColumn() + 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES); 修改为srcRange.copyTo(dstSheet.getRange(2, dstSheet.getLastColumn() + 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, true); 时,通过转置放置值。
      • 如果appended to the next column horizontally表示你想通过转置将“C2:C26”中的值水平放置到最后一列,请测试一下。

    参考资料:

    【讨论】:

    • 我尝试了这两个脚本,但是,我在两个脚本上都遇到了同样的错误:ReferenceError: srcSheet is not defined (rad: 4, fil: Kod)。我的操作系统是瑞典语,因此是“rad”和“kod”。它们的意思是“行”和“代码”。不知道是不是我的错?
    • 我相信你已经完全正确地理解了这个问题。
    • 您好@PhilipHegardt,您只需将var sheet 重命名为var srcSheet。干杯!
    • @Philip Hegardt 感谢您的回复。我带来的不便表示歉意。我注意到我的脚本包含错误的部分。我忘记了我已将变量名从sheet 替换为srcSheet。这是因为我的技术不好。我对此深表歉意。所以我更新了它。你能确认一下吗?
    • @ale13 非常感谢您的支持。我可以注意到它并修改脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多