Добавление массива из переменной в Google Sheets - Google Apps Script - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть существующий код, который выглядит следующим образом:

var copyPageNumbers = [5, 7, 9];

У меня такое же число 5, 7, 9 в столбце на моем листе Google, и я установил переменную для получения значения,

var credentials = ss.getRange(i, 11).getValue(); // The value of this is 5, 7, 9

На основании переменных выше. Я хочу использовать код, который использует переменную credentials в переменной copyPageNumbers, чтобы выглядеть примерно так:

var copyPageNumbers = [credentials];

Например, работает приведенный ниже фрагмент кода,

  var credentials = ss.getRange(i, 11).getValue();
  var copyPageNumbers = [2, 4];

  var offset = 1;

  var slides = otherPresentation.getSlides();
  var page = 0;
  slides.forEach(function(slide, i) {
    if (copyPageNumbers.indexOf(i + 1) != -1) {
      currentPresentation.insertSlide(offset + page, slide);
      page++;
    }
  });

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

  var credentials = ss.getRange(i, 11).getValue().split(", ");
  var copyPageNumbers = credentials
  var offset = 1;
  var slides = otherPresentation.getSlides();
  var page = 0;
  slides.forEach(function(slide, i) {
    if (copyPageNumbers.indexOf(i + 1) != -1) {
      currentPresentation.insertSlide(offset + page, slide);
      page++;
    }
  });
  var credentials = ss.getRange(i, 11).getValue();
  var offset = 1;
  var copyPageNumbers = []
  copyPageNumbers.push(credentials);
  var slides = otherPresentation.getSlides();
  var page = 0;
  slides.forEach(function(slide, i) {
    if (copyPageNumbers.indexOf(i + 1) != -1) {
      currentPresentation.insertSlide(offset + page, slide);
      page++;
    }
  });

Ответы [ 3 ]

2 голосов
/ 13 февраля 2020
var copyPageNumbers = [];
var credentials = ss.getRange(i, 11).getValue();
copyPageNumbers.push(credentials);

Вам нужен массив ([5,7,9]), 'credentials' - это строка (5,7,9). С помощью метода (javascript) pu sh () эта строка добавляется в массив «copyPageNumbers». Если я хорошо понимаю.

2 голосов
/ 13 февраля 2020

var credentials = ss.getRange(i, 11).getValue(); возвращает строку"5, 7, 9", но вам нужно это в виде массива.

Предполагая, что формат соответствует (то есть [число] [ запятая] [пробел]), вы можете использовать split(), чтобы превратить его в массив.

var credentials = ss.getRange(i, 11).getValue().split(", "); // [5, 7, 9]
var copyPageNumbers = credentials;
0 голосов
/ 15 февраля 2020

Благодаря приведенным выше ответам и Pattern 2 здесь мне удалось решить эту проблему.

См. Обновленный скрипт ниже. Причина, по которой он не работал раньше, заключалась в том, что Для каждого l oop, который зацикливал слайд, а число и массив не работали.

  var credentials = ss.getRange(i, 11).getValue().split(", ");

  var offset = 0;

  var slides_stack = otherPresentation.getSlides();
  var page = 0;

    credentials.forEach(function(p, i) {
    currentPresentation.insertSlide(offset + i, slides_stack[p - 1]);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...