Как избежать дублирования при экспорте из Google Таблиц в Firebase - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь экспортировать данные из Google Таблиц в коллекцию в Google Firestore. Я использую редактор сценариев в Google Таблицах для написания кода. Я успешно перенес данные в Firestore. Однако, если я добавляю новые данные в Google Sheet и пытаюсь экспортировать в Firestore все данные, которые уже были в Firestore, дублируются. Как я могу сделать так, чтобы код добавлял только новые данные, а не все, когда я экспортирую?

//Create a menu item for 'Export to Firestore'
function onOpen() {
  SpreadsheetApp.getUi().createMenu('? Firebase').addItem('Export to Firestore', 'main').addToUi();
}

function main() {
  //Get the active spreadsheet and its name for the collection name
  var sheet = SpreadsheetApp.getActiveSheet();
  var sheetName = sheet.getName();
  
  //Get the first row as object properties
  // ['Author', 'ISBN', 'Category', 'Title']
  var properties = getProperties(sheet);
  
  //Get the next 4 rows as records
  //[ ['Hansley Ford', '34787426409', 'Drama', 'Grim Peeks'], ..., ...]
  var records =  getRecords(sheet);
  
  //Export to Firestore
  var firestore = FirestoreApp.getFirestore('','','');
  
   
  exportToFirestore(firestore, sheetName, properties, records);
}
function exportToFirestore(firestore, collectionName, properties, records) {
  records.map(function(record) {
    //record: ['Hansley Ford', '34787426409', 'Drama', 'Grim Peeks']
    //props: ['Author', 'ISBN', 'Category', 'Title']
    var data = {};
    properties.forEach(function(prop,i) { data[prop] = record[i]; });
    return data;
  }).forEach(function(data) {
    firestore.createDocument(collectionName, data);
  });
}

function getProperties(sheet) {
  return sheet.getRange(1, 1, 1, 4).getValues()[0]; //['Author', 'ISBN', 'Category', 'Title']
}

function getRecords(sheet) {
  return sheet.getRange(2, 1, 5, 4).getValues();
}

...