Добавлять только уникальные строки - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь прочитать внешний JSON API и записать проанализированные значения из него в лист Google.Таким образом, каждый вызов API записывает новую строку в лист.Второе требование состоит в том, чтобы записать строку только в том случае, если она содержит что-то еще, кроме уже вставленных строк - другими словами, добавлять новую строку только в том случае, если она уникальна.

Я выполнил первое требование.Я использовал JSON.parse и appendRow, и это работает без проблем.

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

У кого-нибудь есть совет, как добавлять только уникальные строки из скрипта Google Apps?

РЕДАКТИРОВАТЬ: Я прошу прощения за неточный пост выше.Вот подробности.

Ниже упомянутый код - мое решение для первого требования:

function run() {

 var data = UrlFetchApp.fetch("https://url/json-api").getContentText();
 var json = JSON.parse(data);

 var last = (json.last);
 var credit = parseInt(json.credit); 

 var doc = SpreadsheetApp.openById("googleSheetID");
 var list = doc.getSheets()[0];


 list.appendRow([last, credit]);
}

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

Однако я не хочу запускать какие-либо отличительные выражения после записи избыточных строк.Я хотел бы проверить, являются ли новые проанализированные данные уникальными, и если да - напишите, иначе ничего.

1 Ответ

0 голосов
/ 09 октября 2018
  • значение getLastRow и проверьте, равно ли оно last / credit.Затем добавьте строку, если это необходимо.

  • Фрагмент сценария:

    var lastRow=list.getRange(1,list.getLastRow(),1,2).getValues(); //[[prev.last,prev.credit]]
    if(lastRow[0][0]!=last && lastRow[0][1]!=credit){
     list.appendRow([last, credit]);
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...