google-sheet api rails,多次写入工作表问题

时间:2017-02-17 08:22:49

标签: ruby-on-rails ruby google-spreadsheet-api

我目前正在尝试在我的网站https://github.com/gimite/google-drive-ruby

中进行此操作

因为我想将一些提交的信息存储到我的Google工作表中,每当有人提交表单时。

代表您实施""我的rails的方法,我能够将这些信息保存到我的谷歌表。但是,我有一个严重的问题,如果有超过1人同时提交表格,可能会发生三件事

1)两个表格都键入表格 2)其中一个表格是键入两次 3)(如果3个表格同时运行)一个条目丢失。

这是我的控制器中的ruby定义,当用户点击提交按钮时会触发该定义。

    update = function(data) {
        alert(data);
        var displayStart = data._iDisplayStart;
        var displayLength = data._iDisplayLength;
        var records = data.aiDisplay.length;
        if(displayStart != 0) {
            var data = getProviderData(displayStart, displayLength, records, true);
            for(var i = 0; i < data.length; i++ ) {
                no = no + 1;
                data[i].no = no;
                try {
                    var json =  data[i].jsonBody.replace(/\\n/g, "")
                        .replace(/\\'/g, "\\'")
                        .replace(/\\"/g, '\\"')
                        .replace(/\\&/g, "\\&")
                        .replace(/\\r/g, "\\r")
                        .replace(/\\t/g, "\\t")
                        .replace(/\\b/g, "\\b")
                        .replace("%", "")
                        .replace(/\\f/g, "\\f");

                    data[i].jsonContent = JsonHuman.format(JSON.parse(json)).outerHTML;
                }
                catch (e) {
                    data[i].jsonContent = data[i].jsonBody;
                }
            }

            var recordsArray = [];
            for(var j = 0; j < data.length; j++) {
                var temp = [];
                temp.push(data[j].no);
                temp.push(data[j].responseTime);
                temp.push(data[j].api);
                temp.push(data[j].jsonContent);
                recordsArray.push(temp);
            }
            // table.rows.add(recordsArray).draw();
            $('#table').dataTable().fnAddData(recordsArray);
        }
        // drawGadget();
        // wso2gadgets.update(data,"append");
return;
    };

请注意,我有2个电子表格。第二张表保留行号。我使用此解决方案是因为我不确定如何防止2个人同时覆盖同一行。第一个电子表格当然是我希望更新的文件。

1 个答案:

答案 0 :(得分:1)

我建议使用任何作业库来使用后台作业,因此当用户提交表单时,写入作业以写入google表格

http://tutorials.jumpstartlab.com/topics/performance/background_jobs.html

https://github.com/resque/resque

http://redistogo.com/documentation/resque