Google Sheets как база данных - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь ввести некоторые данные на лист в листах Google, создать кнопку, которая передает данные на другой лист.Другой лист будет похож на мою базу данных.

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

function transfer() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheets()[0];
  var destination = ss.getSheets()[1];

  var range1 = source.getRange("B2");
   range2.copyValuesToRange(destination,3,3,2,2);
    range2.clearContent();

   var range2 = source.getRange("C2");
    range2.copyValuesToRange(destination,4,4,2,2); 
     range2.clearContent();

   var range3 = source.getRange("D2");
    range3.copyValuesToRange(destination,5,5,2,2);
     range3.clearContent();

   var range4 = source.getRange("C2");
    range4.copyValuesToRange(destination,4,4,2,2); 
     range4.clearContent();


  }

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

var range1 = source.getRange("A2");
 range1.copyValuesToRange(destination,2,2,2,2);
  if (range1 ==!"");
   Browser.msgBox("Please Enter A Date");

Это вызвало окно сообщения, но все равно скопировало данныеover.

Последнее, что я бы хотел, чтобы range1 был похож на уникальный идентификатор.Поэтому, если я добавлю значение в A2 на исходный лист, оно автоматически заполнит другие ячейки.

Вот ссылка, если это поможет.

https://docs.google.com/spreadsheets/d/1Zi7Oc0f5AlxcRRoFMM1Q1VkkM1Co6Yo8yYBY1TvkQMc/edit?usp=sharing

1 Ответ

0 голосов
/ 07 декабря 2018

Я рекомендую вам проводить больше времени с документацией.Лично я никогда не думал ставить кнопки прямо на электронную таблицу.Я бы предпочел использовать меню или диалог или боковую панель.Также вы обычно повышаете производительность, чтобы заменить использование getValue () на getValues ​​(), где это уместно.

Но вот еще один способ решения проблемы, над которой вы работаете.Возможно, это даст о чем подумать.Повеселись.Ваши кнопки выглядят хорошо, хотя.Очень хорошая работа.

function onOpen(){//This will put a post button on a menu
  SpreadsheetApp.getUi().createMenu('My Menu')
  .addItem('Post Data', 'postData')
  .addToUi();
}

function postData() {//this will append data fromm 'DataEntry' to 'DB' with a timestamp spliced into it.
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName('DataEntry');
  var sh2=ss.getSheetByName('DB');
  var rg1=sh1.getRange(sh1.getLastRow(),1,1,sh1.getLastColumn());
  var vA=rg1.getValues();
  vA[0].splice(0,0,Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"E MMM dd, yyyy HH:mm:ss"));
  sh2.appendRow(vA[0]);
}

Вот как выглядит моя вкладка DateEntry:

enter image description here

Так выглядит моя вкладка БДнапример:

enter image description here

Сообщение просто добавляет последнюю строку в DataEntry к строке после последней строки в БД.

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