Как создать несколько новых записей в другой таблице SQL одним нажатием кнопки - PullRequest
0 голосов
/ 13 июня 2019

Я новичок здесь.Заранее спасибо за ваш совет.

Я работаю над приложением, которое спросит пользователя, сколько предметов они сделали.Пользователь введет номер.Затем мое приложение должно создать столько новых записей в таблице с именем Items_Made.

Например, приложение спросит «Сколько элементов вы сделали?», Пользователь вводит «19», приложение затем создает 19 новыхзаписей в таблице Items_Made.

Мне удалось собрать некоторый код (показанный ниже), который создает ОДНУ новую запись, но я хотел бы, чтобы он создал несколько.Возможно, мне нужен какой-то цикл или функция while, но я не уверен, как это сделать.

var ceateDatasource = app.datasources.Items_Made.modes.create;
var newItem = ceateDatasource.item;
ceateDatasource.createItem();

Этот код успешно создает 1 запись.Я хотел бы, чтобы он мог создавать несколько.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Создание большого количества записей с помощью клиентского скрипта не рекомендуется, особенно если вы потеряете соединение или приложение по ошибке закроется.На мой взгляд, лучший способ справиться с этим - использовать серверный скрипт для двух вещей: во-первых, это более надежно, а во-вторых, быстрее.Как и в примере из официальной документации, для создания записи вам нужно сделать что-то вроде этого:

// Assume a model called "Fruits" with a string field called "Name".
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi";  // properties/fields can be read and written.
app.saveRecords([newRecord]);  // save changes to database.

Приведенный выше пример является наглядным примером того, как создать только одну запись.Чтобы создать несколько записей одновременно, вы можете использовать оператор for, например, такой:

  function createRecordsInBulk(){
    var newRecords = [];
    for(var i=0; i<19; i++){
        var newRecord = app.models.Fruits.newRecord();
        newRecord.Name = "Kiwi " + i;
        newRecords.push(newRecord);
    }
    app.saveRecords(newRecords);
  }

. В приведенном выше примере вы запускаете newRecords , пустой массив, который будет отвечать задержа все новые записи, чтобы создать сразу.Затем, используя оператор for, вы генерируете 19 новых записей и помещаете их в newRecords .Наконец, после завершения цикла вы сохраняете все записи одновременно, используя app.saveRecords и передавая массив newRecords в качестве аргумента.

Теперь всеэто происходит на стороне сервера.Очевидно, вам нужен способ вызвать это со стороны клиента.Для этого вам нужно использовать метод google.script.run .Поэтому со стороны клиента вам нужно сделать следующее:

  google.script.run.withSuccessHandler(function(result) {
      app.datasources.Fruits.load();
  }).createRecordsInBulk();

Вся эта информация четко документирована на официальном сайте документации разработчика приложений .Я настоятельно рекомендую вам всегда сначала проверять это, так как считаю, что вы можете получить более быстрое разрешение, прочитав документацию.

0 голосов
/ 13 июня 2019

Я бы предложил создать раскрывающийся список или текстовое поле, в котором пользователь может выбрать / ввести количество элементов, которые он хочет создать, а затем прикрепить следующий код к кнопке «Создать»:

var createDatasource = app.datasources.Items_Made.modes.create;
var userinput = Number(widget.root.descendants.YourTextboxOrDropdown.value);

for (var i = 0; i <= userinput; i++) {
  var newItem = createDatasource.item;
  createDatasource.createItem();
}

Простой цикл с вашим пользовательским вводом должен выполнить это.

...