Как получить новую таблицу с ключами и результатами сумм в Google Spreadsheets? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть скрипт для подсчета суммы для каждого столбца в моем листе Google. Я получаю правильный результат в сообщении диалога. Теперь мне нужно сделать график из этих данных. Поэтому мне нужно извлечь ключи и значения и вставить в лист в активной электронной таблице.

function countNutrients(){
  var sh=SpreadsheetApp.getActiveSheet();
  var hA=sh.getRange(2,23,1,sh.getLastColumn()-22).getValues()[0];
  var sum={};
  hA.forEach(function(h,i){sum[h]=0;})
  var vA=sh.getRange(3,23,sh.getLastRow()-1,sh.getLastColumn()-22).getValues();  
  vA.forEach(function(r,i){
    r.forEach(function(c,j){
      if(!isNaN(c)) {
        sum[hA[j]]+=c;
       Logger.log(sum);
      }
    });
  }); 
  var html="";
  var keys=Object.keys(sum);
  keys.forEach(function(k,i){
    html+=Utilities.formatString('<br />sum[%s]=%s',k,sum[k]);  
  })
  var ui=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(ui,'The dish contains');
  

}

Есть идеи как его получить? Спасибо!

1 Ответ

2 голосов
/ 24 марта 2020
  • Вы хотите получить ключи и значения из объекта sum в виде массива.
  • Вы хотите поместить полученные значения на лист в активной электронной таблице.
  • Вы хотите добиться этого, изменив свой сценарий.

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

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

  • В этом ответе ключи и значения извлекаются из объекта sum с использованием Object.entries().

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

Когда ваш скрипт модифицируется, он становится следующим. Перед запуском сценария, пожалуйста, задайте имя листа, для которого нужно указать значения.

С:
var html="";
var keys=Object.keys(sum);
keys.forEach(function(k,i){
  html+=Utilities.formatString('<br />sum[%s]=%s',k,sum[k]);  
})
var ui=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(ui,'The dish contains');
Кому:
var values = Object.entries(sum);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);

Примечание:

  • В этом случае ключи и значения помещаются в столбцы «A» и «B» соответственно. Если вы хотите поместить ключи и значения в другие столбцы, сообщите мне.
  • При использовании этого измененного сценария, пожалуйста, включите V8 в редакторе сценариев.

Ссылка:

Если я неправильно понял ваш вопрос и это не то направление, которое вы хотите, я приношу свои извинения.

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