谷歌应用程序脚本+;谷歌工作表-从单元格中获取URL(链接到单独的工作表),并从链接的工作表中拉入工作表选项卡

谷歌应用程序脚本+;谷歌工作表-从单元格中获取URL(链接到单独的工作表),并从链接的工作表中拉入工作表选项卡,url,google-apps-script,google-sheets,hyperlink,Url,Google Apps Script,Google Sheets,Hyperlink,我已经为此工作/研究了几天,但需要添加一个自动化元素,我当前的脚本不适合最终目标 我需要: 从我的主“生成器”工作表上的单元格中获取URL 该URL指向一个完全独立的Google页面 我需要从外部链接的Google工作表中获取一个特定的命名工作表选项卡,并将其作为一个新的工作表选项卡带到我的主文档中 带有URL的源单元格可能会替换为新链接,因此需要自动化。我不希望有多个带有硬编码的工作表ID或URL的脚本 URL链接可能会更改,但每个外部工作表都有一个同名的选项卡,因此保持一致 似乎如果我将

我已经为此工作/研究了几天,但需要添加一个自动化元素,我当前的脚本不适合最终目标

我需要:

  • 从我的主“生成器”工作表上的单元格中获取URL
  • 该URL指向一个完全独立的Google页面
  • 我需要从外部链接的Google工作表中获取一个特定的命名工作表选项卡,并将其作为一个新的工作表选项卡带到我的主文档中
  • 带有URL的源单元格可能会替换为新链接,因此需要自动化。我不希望有多个带有硬编码的工作表ID或URL的脚本
  • URL链接可能会更改,但每个外部工作表都有一个同名的选项卡,因此保持一致
似乎如果我将URL单元格(在本例中,B28包含URL)作为变量存储在脚本中,它就不再具有可读性。例如:

  var SPREADSHEET_URL_REFERENCE_SOURCE_SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calc Generator");
  var SPREADSHEET_URL_REFERENCE_SOURCE_RANGE = SPREADSHEET_URL_REFERENCE_SOURCE_SHEET.getRange("B28");
  var SPREADSHEET_URL_VALUE = SPREADSHEET_URL_REFERENCE_SOURCE_RANGE.getValues();
之后,我的脚本无法再获取URL。任何帮助都将不胜感激,我在这一点上有点雪盲

更改此行:

var SPREADSHEET_URL_VALUE = SPREADSHEET_URL_REFERENCE_SOURCE_RANGE.getValues(); 
对此

var SPREADSHEET_URL_VALUE = SPREADSHEET_URL_REFERENCE_SOURCE_RANGE.getValue();

换言之,移除末端的s。如果不这样做,那么所需的值将变成
电子表格\u URL\u值[0][0]
,即使它只是一个单元格,它仍然是一个二维数组。

我想我已经解决了这个问题。它将从您自己的特定工作表上的单元格中获取外部工作表的URL,并将外部工作表拉入到您的工作表中,并为其创建一个新的选项卡副本

正如Cooper所说,设置getValue很有帮助,但是我可以使用openByURL并指向我的链接变量来获取它,这允许获取特定的外部工作表选项卡

谢谢你的帮助

    function copySheettest()
{
  //  
  var SPREADSHEET_URL_REFERENCE_SOURCE_SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("[MASTER] Calc Generator");
  var SPREADSHEET_URL_REFERENCE_SOURCE_RANGE = SPREADSHEET_URL_REFERENCE_SOURCE_SHEET.getRange("B28");
  var SPREADSHEET_URL_VALUE = SPREADSHEET_URL_REFERENCE_SOURCE_RANGE.getValue();
  Logger.log(SPREADSHEET_URL_REFERENCE_SOURCE_RANGE);



  var sourceSheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL_VALUE);
  var source_sheet = sourceSheet.getSheetByName("Info Calculations");
  var target = SpreadsheetApp.getActiveSpreadsheet();
  var target_sheet = target.getSheetByName("target_sheet");
  var source_range = source_sheet.getRange("A1:AA69");
  var target_range = target_sheet.getRange("A1:AA69");
  //
  var values = source_range.getValues();
  var bGcolors = source_range.getBackgrounds();
  var colors = source_range.getFontColors();
  var fontSizes = source_range.getFontSizes();
  // make use of autocomplete to find other methods...
  target_range.setValues(values);
  target_range.setBackgrounds(bGcolors);
  target_range.setFontColors(colors);
  target_range.setFontSizes(fontSizes);
}

我能问一下你的问题吗?1.我无法理解
之后,我的脚本无法再获取URL。
。你能解释一下细节吗?2.如果
之后我的脚本无法再抓取URL。
是您的问题,您想解决它,那么
我需要做什么:
?我们是否需要准备脚本来实现我需要的所有内容:?嗨!否:我已准备好脚本的其余部分,将URL作为变量解析只是一个问题。:)谢谢,我试过了,但是当我从链接的工作表中抓取一个特定的工作表选项卡时,我得到了一个错误:“在对象中找不到函数getSheetByName”,基于:var sourceSheet=SPREADSHEET\u URL\u VALUE;var source_sheet=sourceSheet.getSheetByName(“信息计算”);我假设getSheetByName仅用于电子表格应用程序。如果您愿意,可以使用getValues(),但这一行
var sourceSheet=SpreadsheetApp.openByUrl(电子表格\u URL\u值)需要如下
var sourceSheet=SpreadsheetApp.openByUrl(电子表格URL值[0][0])