使用Google Apps脚本从Google Spreadsheet获取数据

时间:2019-11-26 13:18:42

标签: android google-apps-script google-sheets

我正在为舞蹈学校开发一个应用程序(使用android studio),教师可以在其中输入工作时间。所有这些都有效,但是我希望能够在每次添加一个条目时返回它们到目前为止所做的所有条目。我正在使用google apps脚本,但到目前为止没有任何效果。我无法从电子表格中获取数据。每个老师都有自己的工作表,我希望该应用程序仅返回单个老师在电子表格中插入的内容。我现在有了这段代码:

    var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1Eh5dlBbyuOhG5shxYIa7C6C78okVuSmLb-cB3GlylbE/edit#gid=0");
var Sheet = ss.getSheetByName("Helena D'Hondt");

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

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

function doGet(e){

var action = e.parameter.action;

  if(action == 'getItems'){
    return getItems(e);

  }

  }


function addItem(e){
  var date = e.parameter.date;
  var name = e.parameter.name;
  var group = e.parameter.group;
  var minutes = e.parameter.minutes;
  Sheet = ss.getSheetByName(naam);
  Sheet.appendRow([name, date, group, minutes]);
  return contentService.createTextOutput("Success").setMineType(ContentService.MineType.TEXT);
}

function getItems(e){

  var records={};

  var rows = Sheet.getRange(2, 1, Sheet.getLastRow() - 1,Sheet.getLastColumn()).getValues();
      data = [];
  var gegevens

  for (var r = 0, l = rows.length; r < l; r++) {
    var row     = rows[r],

    info = data + "date: " + row[1] + "   group: " + row[2] + "   minutes: " + row[3] + "\r\n";

    data.push(info);

   }
  records.items = data;
  var result=JSON.stringify(info);
  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
}

这是我必须在应用程序中获取数据的代码:

 protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_item);

        listView = (ListView) findViewById(R.id.lv_items);

        getItems();

    }


    private void getItems() {

        loading =  ProgressDialog.show(this,"Loading","please wait",false,true);

        StringRequest stringRequest = new StringRequest(Request.Method.GET, "https://script.google.com/macros/s/AKfycbwI1su0iHcrK4baCccu8AganWvsf1CQUUCCT9Gp7BK6tk5HusLk/exec",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        parseItems(response);
                    }
                },

                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }

                }
        );

        int socketTimeOut = 50000;
        RetryPolicy policy = new DefaultRetryPolicy(socketTimeOut, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);

        stringRequest.setRetryPolicy(policy);

        RequestQueue queue = Volley.newRequestQueue(this);
        queue.add(stringRequest);

    }


    private void parseItems(String jsonResposnce) {

        ArrayList<HashMap<String, String>> list = new ArrayList<>();

        try {
            JSONObject jobj = new JSONObject(jsonResposnce);
            JSONArray jarray = jobj.getJSONArray("items");


            for (int i = 0; i < jarray.length(); i++) {

                JSONObject jo = jarray.getJSONObject(i);

                String naam = jo.getString("naam");
                String datum = jo.getString("datum");
                String groep = jo.getString("groep");
                String minuten = jo.getString("minuten");



                item.add(naam + ", " + datum + ", " + groep + ", " + minuten);


            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        for (int i = 0; i< item.size(); i++){
            adapter = new SimpleAdapter(this, android.R.layout.simple_list_item_1, item.get(i).toString());
        }



        listView.setAdapter(adapter);
        loading.dismiss();
    }
}

0 个答案:

没有答案