Как ссылаться на разные вкладки в листах Google с помощью редактора скриптов? - PullRequest
0 голосов
/ 22 января 2020

Итак, я работаю над проектом, в котором у меня есть google do c, который подключается к электронной таблице, и я добавил два других листа, которые я хочу заполнить информацией из первой электронной таблицы. Я хочу сделать это в редакторе сценариев, но у меня возникают проблемы со ссылками на другие вкладки. Это то, что я пробовал.

var tabs = [
  'Sign In',
  'Master Info',
  'Made Sheet'  
];

var i = 0;
var sheet = ss.getSheetByName(tabs[i]);
var range = sheet.getRange(1, 1).getValues();
Logger.log(sheet);
Logger.log(range);

Выводы, которые я получаю:

лист
Штамп времени

«Штамп времени» - первая ячейка в лист, чтобы я мог ссылаться на значение, но не на имя листа или любой другой индекс, который не i = 0; Любая помощь приветствуется, или источники о том, как листы с вкладками могут взаимодействовать.

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

  var sheet = ss.getSheetByName(tabs[0]);
  //sign in sheet variable

  var sheet1 = ss.getSheetByName(tabs[1]);

  Logger.log(tabs[0]);//works
  Logger.log(tabs[1]);//works

  var A1Value = sheet.getRange(1,1).getValue();

  var signIn = A1Value;//gets first cell


  var secondVar = sheet1.getRange(1,1).getValue();//error occurs

1 Ответ

1 голос
/ 23 января 2020

Если вы работаете в Google Do c, то вы можете получить доступ к электронной таблице с помощью

var ss=SpreadsheetApp.openById('ssid');//you supply the ssid

, а к любому из листов по имени можно получить доступ с помощью var sheet=ss.getSheetByName('SheetName');* 1007. *

и вы можете получить значения с помощью var A1value = sheet.getRange(1,1).getValue();

, и вы можете записать в ячейки с помощью sheet.getRange(1,1).setValue('new value');

Если вы знаете порядок листов и никто их не перемещает, то Вы можете сделать что-то вроде этого.

var shts=ss.getSheets();
var mostLeftSheet=shts[0];
var nextSheetToTheRight=shts[1];
var thetenthfromRight=shts[9];

Надеюсь, это поможет вам начать. Если я не ответил на ваш вопрос, пожалуйста, дайте мне знать.

Если вы можете поместить все данные, к которым у вас есть доступ sh, в один и тот же блок ячеек, то вы можете получить к ним доступ с помощью getValues ​​() и setValues ​​(), которые возвращают и устанавливают массивы данных. Это гораздо более быстрый способ получения и настройки данных. Тем не менее, это часто бывает трудно при работе с электронными таблицами, которые имеют много формул, а данные, которые вы хотите, распространяются в разных местах.

Попробуйте это:

var tabs = ['Sign In','Master Info','Made Sheet']; 
var sheet = ss.getSheetByName(tabs[0]); 
var sheet1 = ss.getSheetByName(tabs[1]); 
Logger.log(tabs[0]);//works 
Logger.log(sheet1.getName());//works 
var A1Value = sheet.getRange(1,1).getValue(); 
var signIn = A1Value;//gets first cell 
var secondVar=sheet1.getRange(1,1).getValue();//error occurs 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...