setValues ​​() в скрипте приложений не работает при извлечении данных из Trello (может ли это быть ошибкой в ​​методе setValues ​​()?) - PullRequest
0 голосов
/ 22 декабря 2018

Я проверил мой фрагмент кода ниже.Его целью является размещение значений массива в Google Sheet.Это работает.

   `function testArray() {
var array = [["Re wire light in living room"],
["Refinish kitchen cabinets"],
["Change Sewer access cover"],
["Install cap over pvc in kitchen"],
["Install roof overhang with neighbors roof"],
["Paint side wall"],
["Touch up peeled paint in kitchen 2"],
["ท่อน้ำ"],
["Touch up paint/ repaint kitchen"],
["ต่อท่อน้ำทิ้งเครื่องซักผ้า"],
["new line"]];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet(); 
sheet.getRange(2,1,array.length,1).setValues(array);
}`

Тот же код в сочетании с извлечением значений массива из Trello не работает.Получение значений работает.Преобразование этих значений в массив массивов работает.Я вошел оба.Помещение подготовленного массива (jobsReformatted) в лист не работает.Кто-нибудь может сказать мне, что пошло не так?Проблема должна быть с этой строкой: sheet.getRange (2,1, jobsReformatted.length, 1) .setValues ​​(jobsReformatted);

    function fetchCardsFromTrello_() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet(); 

  // Prompt the user for a list name.
  var listID = Browser.inputBox('Fetch Trello List ID',
      'Please enter the Trello list ID',
      Browser.Buttons.OK_CANCEL); 
   if (listID == 'cancel') {
    return;
  }

  var base = "https://api.trello.com/1/lists/";
  // var listName = "5bf10b78584430134125eb09"
  var queries = "/cards?fields=id,name&";
  var key = "<MY API KEY>";
  var token = "<MY API TOKEN>";
  var url = (base + listID + queries + "key="+key + "&" + "token="+token);
  //var sheetName = "";
  var trello = UrlFetchApp.fetch(url);
  var json = trello.getContentText();
  var data = JSON.parse(json);
  Logger.log(data);
  var jobs = [];
  for (i = 0; i < data.length; i++) {
    jobs.push(data[i].name);
  }
  var jobsReformatted = jobs.map(reformatJobs);
  Logger.log(jobsReformatted);
  sheet.getRange(2,1,jobsReformatted.length,1).setValues(jobsReformatted);
}

function reformatJobs(job) {
return "[" + job + "]";
}

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

function fetchCardsFromTrello() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet(); 

  // Prompt the user for a list name.
  var listID = Browser.inputBox('Fetch Trello List ID',
      'Please enter the Trello list ID',
      Browser.Buttons.OK_CANCEL); 
   if (listID == 'cancel') {
    return;
  }

  var base = "https://api.trello.com/1/lists/";
  // var listName = "5bf10b78584430134125eb09"
  var queries = "/cards?fields=id,name&";
  var key = "<MY API KEY>";
  var token = "<MY TOKEN>";
  var url = (base + listID + queries + "key="+key + "&" + "token="+token);
  //var sheetName = "";
  var trello = UrlFetchApp.fetch(url);
  var json = trello.getContentText();
  var data = JSON.parse(json);
  var jobs = [];
  for (i = 0; i < data.length; i++) {
    jobs.push(data[i].name);
  }
  var convertedJobs = jobs.map(convertTrelloToSheetsArray);
  Logger.log(convertedJobs);
  return sheet.getRange(2, 1, 10, 1).setValues(convertedJobs);
  }

function convertTrelloToSheetsArray(job) {
  return "[" + job + "]";
}

Logger.log (convertJobs);производит этот журнал:

[18-12-22 13: 49: 03: 059 ИКТ] [[Перепроверьте свет в гостиной], [Переоборудуйте кухонные шкафы], [Измените крышку доступа в канализацию], [Установитекрышка над пвх на кухне], [Установить навес крыши с соседской крышей], [Покрасить боковую стену], [Подкрасить очищенную краску на кухне 2], [ท่อ น้ำ], [Подкрасить / перекрасить кухню], [ต่อ ท่อ น้ำทิ้ง เครื่อง ซัก ผ้า]]

1 Ответ

0 голосов
/ 22 декабря 2018
  • Вы хотите поместить 10 значений в вашем вопросе в "A2: A11".

Если мое понимание верно, как насчет этой модификации?

Точка модификации:

  • В вашем скрипте каждый элемент convertedJobs становится строкой.
    • Пожалуйста, поместите каждый элемент в одномерный массив.

Модифицированный скрипт:

Пожалуйста, измените следующим образом.

С:
var jobs = [];
for (i = 0; i < data.length; i++) {
  jobs.push(data[i].name);
}
var convertedJobs = jobs.map(convertTrelloToSheetsArray);
Logger.log(convertedJobs);
return sheet.getRange(2, 1, 10, 1).setValues(convertedJobs);
Кому:
var jobs = [];
for (i = 0; i < data.length; i++) {
  jobs.push([data[i].name]);
}
return sheet.getRange(2, 1, 10, 1).setValues(jobs);

или, вы также можете использовать map() следующим образом.

var jobs = data.map(function(e){return [e.name]});
return sheet.getRange(2, 1, 10, 1).setValues(jobs);

Ссылка:

Если это не тот результат, который вы хотите, пожалуйста, сообщите мне.Я хотел бы изменить его.

...