簡體   English   中英

只有數組的第一個元素已輸出到Google工作表,我需要輸出所有元素(空/未定義元素除外)

[英]Only the first element of the array has been output to the google sheet, I need all elements (except null/undefined elements) to be output

我的腳本需要從一張工作表中獲取值,然后將其放入另一張工作表中。 它正確地拾取值。 但是,將值輸出到另一張紙時,僅輸出第一個元素。 我需要輸出所有元素。 (我認為)可以通過以下兩種方式之一來實現: 在輸出值時跳過或忽略數組的空白元素,或者忽略源工作表中的空白單元格。 任何幫助表示贊賞。 腳本如下:

更新的代碼:

function exportArds() {

  var ards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Newtownards");
  var export = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Export");
  var ardsLastRow = ards.getLastRow();
  var exportLastRow = export.getLastRow();
  var refValues = new Array(6);
  var amountValues = new Array(6);

 //get values for export
  refValues = ards.getRange("B12:G12").getValues();
  amountValues = ards.getRange("B13:G13").getValues();

 for(var i = 2; i<=6; i++){

   var a = refValues.join().split(',').filter(Boolean);
   var b = amountValues.join().split(',').filter(Boolean);

   //get values, if any, in export sheet (used to check where the empty cells are for input) 
   var checkAmount = export.getRange(i, 4).getValue().toString();
   var checkDescription = export.getRange(i, 5).getValue().toString();
   export.getRange(i, 4).setValue(b[i-2]);
   export.getRange(i, 5).setValue(a[i-2]);
 }//close for loop
 Logger.log(a);
 Logger.log(b);
}//close function

但是,當將值正確設置為一個單元格時,下一張工作表如果數組中有2個值,則未定義將輸出4次。 有辦法防止這種情況嗎?

我找到了解決此問題的解決方案,我敢肯定它可能會更干凈一些,請隨時評論任何建議! 代碼如下:

function exportArds() {

  var ards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Newtownards");
  var export = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Export");

  //get values for export
   var refValues = ards.getRange("B12:G12").getValues();
   var amountValues = ards.getRange("B13:G13").getValues();

  for(var i = 2; i<=6; i++){

    var a = refValues.join().split(',').filter(Boolean);
    var b = amountValues.join().split(',').filter(Boolean);

  }//close for loop
  var aLength = a.length;
  var bLength = b.length;

  for(i = 2; i<=aLength; i++){
    export.getRange(i, 5).setValue(a[i-2]);
  }
  for(i = 2; i<=bLength; i++){
    export.getRange(i, 4).setValue(b[i-2]);
  }
}//close function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM