【问题标题】:How to reference different tabs in google sheets with the Script Editor?如何使用脚本编辑器引用谷歌表格中的不同选项卡?
【发布时间】:2020-01-22 20:36:55
【问题描述】:

所以我正在做一个项目,我有一个连接到电子表格的谷歌文档,我添加了另外两张我想用第一个电子表格中的信息填充的工作表。我想在脚本编辑器中执行此操作,但无法引用其他选项卡式工作表。 这是我尝试过的。

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 的索引; 感谢您提供任何帮助,或有关选项卡式工作表如何交互的资源。

这是我迄今为止所做的,我很困惑为什么我在第二张表中得到 null,即使名称可以打印并且填充了数据。

  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

【问题讨论】:

  • 当你有一个值数组并且你想对每个值做一些事情时,你需要使用循环。花一些时间在 Mozilla 开发者网络 (MDN) 等网站上查看 JavaScript 语言基础知识,并学习各种教程。

标签: google-apps-script google-sheets


【解决方案1】:

如果您在 Google Doc 中工作,那么您可以使用

访问电子表格

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

您可以使用var sheet=ss.getSheetByName('SheetName');按名称访问任何工作表

你可以通过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];

如果您可以将所有您希望访问的数据放在同一个单元格块中,那么您可以使用返回和设置数据数组的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 

【讨论】:

  • 我需要查看更多您的代码,但看起来 sheet2 未定义,因此 tabs[1] 可能无法正常工作。
  • 请在您的问题中发布。
  • 看看我回答中的最后一个条目。 IE。试试用Logger.log(sheet1.getName());替换Logger.log(tabs[1])
  • 所以我猜没有名为“主信息”的工作表检查末尾或开头的空格
  • 我最近才这样做。我花了很长时间才弄明白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多