Google App Script возвращает каждый столбец двумерного массива с URL - PullRequest
1 голос
/ 29 апреля 2020

Я новичок в GAS и пытаюсь создать приложение, которое отображает список людей с возможностью поиска, нажимает уникальный идентификационный номер и открывает другую страницу для обновления данных. Я заставил поиск работать другим методом, но возвращал данные только в журналы, а не в таблицу html. Вчера вечером я наткнулся на этот пост , который, как я думал, позволил бы мне создать ссылку, но я не знаю, как отобразить каждый столбец независимо с помощью многомерного массива. Приведенный ниже код выплевывает всю строку, но мне нужно, чтобы первый столбец был связан с URL-адресом, который изменяется для каждой строки в зависимости от данных в первом столбце. Я подумала, что попытаюсь создать новый столбец с вычисленной ссылкой, и если я возьму этот столбец вместо этого, он будет работать, но без кубиков (вот почему я тяну J вместо A). таким образом, первый столбец row1 будет mylink.com?id=36, row2 будет mylink.com?id=400 и т. д. c.

Итак, в итоге у меня есть 3 проблемы, если объединить 2 и 3 Я согласен с этим.

  1. фильтр / поиск по нескольким столбцам (с подстановочными знаками?) Возвращает результаты.
  2. отображает многомерный массив каждого столбца независимо (в основном для выполнения # 3) .
  3. захватите идентификатор в первом столбце и создайте интерактивный URL-адрес на основе идентификатора в первом столбце.

code.gs

function getData()
{

  var targetRange = 'SearchList!A:J';
  var SQL = 'select J, B, C, D where J is not null';
  var Query = '=QUERY('+targetRange+',\"'+SQL+'\")';
  Logger.log(Query);

  var currentDoc = SpreadsheetApp.openByUrl(url);
  var tempSheet = currentDoc.insertSheet();

  var pushQuery = tempSheet.getRange(1, 1).setFormula(Query);
  var pullResult = tempSheet.getDataRange().getValues();
  Logger.log(pullResult);
  currentDoc.deleteSheet(tempSheet);  

  return pullResult;
}

html

<table class="table table-striped table-bordered table-hover">
          <thead>
            <td>Scripta ID</td>
            <td>Last Name</td>
            <td>First Name</td>
            <td>Birth Date</td>
          </thead>        
          <tbody id="table-body">            

<?     var data = getData(); 
       for (var i = 0; i < data.length; i++) 
       { 
?>
        <tr>
<?         for (var j = 0; j < data[i].length; j++) 
          { 
            Logger.log(data[i][j]);

?>
            <td><a href="<?= ScriptApp.getService().getUrl(); ?>?f=member&sid="&<?= data[i][j] ?>><?= data[i][j] ?></a></td>
<?        } 
?>
        </tr>
<?    } 
?>

        </tbody>
</table>

1 Ответ

1 голос
/ 30 апреля 2020

Чтобы получить только столбец A:

function getOne() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var vs=sh.getRange(1,1,sh.getLastRow(),1).getValues();
  vs.forEach(function(r,i){
    //r[0] is columnA for each row
  });
  //or
  for(var i=0;i<vs.length;i++) {
    //vs[i][0] is column A for each row
  }
}

Sheet.getRange (строка, столбец, числа, числа)

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