【问题标题】:Storing an Array in Google App Script and Printing an Array to Google Sheets Column在 Google App 脚本中存储数组并将数组打印到 Google Sheets 列
【发布时间】:2019-11-29 02:42:53
【问题描述】:

我正在使用 Google 表格,我试图将一列整数存储在一个数组中,然后清除表格上的一列,然后将整数数组打印到表格上的一列。请参阅下面的代码...

function myFunction1() {

//Declaring the Active Sheet
var mySheet = SpreadsheetApp.getActiveSheet();

//Declaring the range that will make up the Array
var myRange = mySheet.getRange("E10:E328");

//Declaring Array 
var myArray = [[myRange.getValues()]];

//Clearing a range on the Google Sheet
mySheet.getRange('A10:A328').clearContent();

//Printing Array to Google Sheet
mySheet.getRange(15, 5).setValues([myArray]);

}

上面的代码运行没有任何错误,但没有将我的数组打印到工作表上。我已经为此工作了一段时间,并使用以下文章尝试修复它...

https://productforums.google.com/forum/#!topic/docs/t99laH0rFc0

Incorrect Range Height - Google Script

Writing 1D array into a sheet column in Apps Script

https://developers.google.com/apps-script/reference/spreadsheet/range#setvaluesvalues

到目前为止,我在编写代码时遇到的常见错误是“范围高度不正确”和“无法将数组转换为对象[][]”。

我将如何解决这个问题,以便我的 Array 打印到工作表上的列?

感谢您的宝贵时间!对此的任何帮助都会很棒!

【问题讨论】:

    标签: javascript arrays google-apps-script google-sheets


    【解决方案1】:

    你让它变得比你必须做的更复杂一些。

    function myFunction1() {
    
    //Declaring the Active Sheet
    var ss = SpreadsheetApp.getActiveSpreadsheet();  
    var mySheet = ss.getActiveSheet();
    
    //Declaring the range that will make up the Array
    var myArray = mySheet.getRange("E10:E328").getValues();//already in an array
    
    //Clearing a range on the Google Sheet
    mySheet.getRange('A10:A328').clearContent();
    
    //Printing Array to Google Sheet
    mySheet.getRange(15, 5).setValues(myArray); //already in an array don't need brackets
    
    }
    

    【讨论】:

    • 这里必须同意汤姆var myArray = [[myRange.getValues()]] 将返回一个[[[[a,b,c]]]](因为var myArray = myRange.getValues() 返回一个[[a,b,c]])并且mySheet.getRange(15, 5).setValues([myArray]) 想在那里写[[[a,b,c]]] 这没有意义
    【解决方案2】:

    // Write data in cell G1, H1, I1
    
    function arrayPlay() {
      
      var newArray = [];
    
      // Variable that saves the data from G1->I1.
      var cellIn1 = ("G1");
      var cellIn2 = ("H1");
      var cellIn3 = ("I1");
      
      var sheet = SpreadsheetApp.getActiveSheet();
      
      // Defines where the data is recieved. (G1, H1, I1)
      var cellOut1 = sheet.getRange(cellIn1);
      var cellOut2 = sheet.getRange(cellIn2);
      var cellOut3 = sheet.getRange(cellIn3);
      
      // Recieve the data from those cells
      var data1 = cellOut1.getValue();
      var data2 = cellOut2.getValue();
      var data3 = cellOut3.getValue();
      
      // Puts the data in the Array. (newArray)
      newArray.push(data1, data2, data3)
        
      // Presents the data in Cell 1-3 (A1, A2, A3)) Downwards
       sheet.appendRow([newArray[0]]);
       sheet.appendRow([newArray[1]]);
       sheet.appendRow([newArray[2]]);
      
      // Presents the data in Cell 1-3 (A1, B1, C1) Sideways
      sheet.appendRow([newArray[0], newArray[1], newArray[2]]);
    
      Logger.log(newArray);
      
    }

    【讨论】:

      【解决方案3】:

      很难准确地说出您要做什么。但是,如果您想用 E 列替换 A 列,只需这样做:

      function myFunction1() {
      var mySheet = SpreadsheetApp.getActiveSheet();
      var myRange = mySheet.getRange("E10:E328").getValues();
      mySheet.getRange('A10:A328').setValues(myRange);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多