Автоматически отслеживать количество продуктов с Shopify API в Google Sheets - PullRequest
0 голосов
/ 17 апреля 2020

Я недавно начал работать и учиться в Google Sheets и столкнулся с несколькими проблемами, которые не мог решить.

Я хочу автоматически отслеживать количество продуктов на нашем сайте Shopify каждый час через Google Sheets с Shopify API.

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

https://medium.com/@paulgambill / как импортировать- json -данные-в-гугл-электронные таблицы менее чем за 5 минут-a3fede1a014

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

https://gyazo.com/6fe0710c7537d2d75249f28810276d43

Я хочу, чтобы макрос работал в первой строке, go вниз на 2 строки и работал так же, как и после 1 часа.

Код макроса I добавлено с относительными ссылками:

function _1() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  spreadsheet.getActiveRange().setFormulaR1C1('=ImportJSON("https://kolayoto.com/collections/lastikleri.json")');
  spreadsheet.getCurrentCell().offset(2, 0).activate();
};

Кроме того,

Полученные результаты API заменяются текущими результатами для следующих часов при обновлении страницы. Есть ли способ преобразовать это в постоянное значение после каждого автоматического вызова API? Можем ли мы установить это также в макросе?

Я надеюсь, что смогу объяснить проблемы достаточно. Буду рад, если вы поможете.

Спасибо.

1 Ответ

0 голосов
/ 17 апреля 2020

Если я правильно понимаю ваш вопрос, то вам нужна функция spreadsheet.getLastRow(). spreadsheet.getLastRow()+1 вернет следующую доступную пустую строку.

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

function _1() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var startCol = 1
  var lastRow = spreadsheet.getLastRow();

  var rawtext = UrlFetchApp.fetch("https://kolayoto.com/collections/lastikleri.json").getContentText()
  var jsonObj = JSON.parse(rawtext);
  var contentObj = jsonObj.collection

  var columns = Object.keys(contentObj)

  var colName = []
  var result = []
  for (var i = 0; i < columns.length; i++){
    var key = columns[i]
    var value = contentObj[key]
    result.push(value)
  }

  var numRow = 1
  var numCol = columns.length
  if(lastRow+1 == 1){
    spreadsheet.getRange(lastRow+1, startCol, numRow, numCol).setValues([columns]);
    spreadsheet.getRange(lastRow+2, startCol, numRow, numCol).setValues([result]);
  }else {
    spreadsheet.getRange(lastRow+1, startCol, numRow, numCol).setValues([result]);
  }

  spreadsheet.getRange(lastRow+1, startCol).activate();
};
...