Отправка данных на листы Google, ошибка тайм-аута залпа - PullRequest
0 голосов
/ 17 октября 2019

Используя android studio и скрипт Google, я пытаюсь добавить несколько строк в листы Google, используя цикл for. Это работает, но иногда он не добавляет все данные, которые я отправляю, он добавляет только несколько строк, а не все. Я не уверен, что это ошибка, связанная с Java или Google Sheets.

метод addItemToSheet, Java:

private void addItemToSheet(final String name, final String extra, final String quantity, final String orderNumber) {

        final ProgressDialog loading = ProgressDialog.show(getActivity(),"Adding Order","Please wait");

        StringRequest stringRequest = new StringRequest(Request.Method.POST, "URLTOWEBAPP",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        loading.dismiss();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                }
        ) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> parmas = new HashMap<>();

                //here we pass params
                parmas.put("action","addItem");
                parmas.put("orderNum",orderNumber);
                parmas.put("itemName",name);
                parmas.put("quantity",quantity);
                parmas.put("extra",extra);

                return parmas;
            }
        };

        int socketTimeOut = 2000;

        RetryPolicy retryPolicy = new DefaultRetryPolicy(socketTimeOut, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        stringRequest.setRetryPolicy(retryPolicy);

        if (null != getActivity()){
            RequestQueue queue = Volley.newRequestQueue(getActivity());
            queue.add(stringRequest);
        }
    }

Вызов метода addItemToSheet, Java:

btnSubmit.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                if (null != getActivity()){
                    ArrayList order = ((MainActivity)getActivity()).orderList;
                    ArrayList addOns = ((MainActivity)getActivity()).addOnList;
                    String orderId = randomStringGen();

                    for (int i = 0; i < order.size(); i++){
                        String itemName = order.get(i).toString();
                        String addOn = addOns.get(i).toString();
                        String quantity = order.get(i).toString();
                        quantity = quantity.substring(quantity.length() -  2, quantity.length() - 1);
                        itemName = itemName.substring(0, itemName.length() - 4);

                        System.out.println("IDDDDDD: " + i + " " + itemName + " " + addOn + " " + quantity + " " + orderId );
                        addItemToSheet(itemName,addOn,quantity,orderId); // Call to method
                    }

                    ((MainActivity)getActivity()).clearOrderList();

                }
            }
        });

Google Web App:

var ss = SpreadsheetApp.openByUrl("URLTOSHEET");

var sheet = ss.getSheetByName('Items'); 


function doPost(e){
  var action = e.parameter.action;

  if(action == 'addItem'){
    return addItem(e);
  }

}





function addItem(e){

  var date =  new Date();

  var id  =  sheet.getLastRow(); // Item1

  var orderNum = e.parameter.orderNum;

  var itemName = e.parameter.itemName;

  var quantity = e.parameter.quantity;

  var extra = e.parameter.extra;



  sheet.appendRow([date,id,orderNum,itemName,quantity,extra]);

  return ContentService.createTextOutput("Success").setMimeType(ContentService.MimeType.TEXT);

}

В зависимости от цикла for, например, я ожидаю, что он добавит 5 строк, но вместо этого он добавит только 2 строки, иногда это работает иногдане делает. Обычно это не работает, когда я пытаюсь добавить много строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...