Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 带有超链接的单元格,用于使用google工作表(脚本)中的相邻行数据填充目标工作表_Google Apps Script_Google Sheets_Hyperlink - Fatal编程技术网

Google apps script 带有超链接的单元格,用于使用google工作表(脚本)中的相邻行数据填充目标工作表

Google apps script 带有超链接的单元格,用于使用google工作表(脚本)中的相邻行数据填充目标工作表,google-apps-script,google-sheets,hyperlink,Google Apps Script,Google Sheets,Hyperlink,下面的代码向a列中的单元格添加了一个链接,当单击该链接时,会将用户带到另一个工作表中的单元格E7。 现在已设置链接的列也有两个相邻列(B和F),当用户单击特定行上的链接时,其行数据应填充目标工作表中的单元格B19和E7 function addHyperlink(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var dataRng = ss.getSheetByName("Painel de Embarques"

下面的代码向a列中的单元格添加了一个链接,当单击该链接时,会将用户带到另一个工作表中的单元格E7。 现在已设置链接的列也有两个相邻列(B和F),当用户单击特定行上的链接时,其行数据应填充目标工作表中的单元格B19和E7

function addHyperlink(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataRng = ss.getSheetByName("Painel de Embarques").getRange(27, 1, ss.getLastRow(), 4).getValues();
  var rngValues = [];//This is for getting only non-empty rows
  for (var n = 0; n<dataRng.length; n++){
    if (dataRng[n][1] != ''){
      rngValues.push(dataRng);
    }
  }
  var destSheet = ss.getSheetByName("Atualizar Embarque").getSheetId();
  for (var a = 1; a < rngValues.length; a++) {
    if (rngValues[a][1] != ''){
      const fat = rngValues[a][1];
      const stat = rngValues[a][5];
      ss.getSheetByName("Painel de Embarques").getRange(27,1,rngValues.length,1).setValue('=hyperlink("https:sheetLink/edit#gid='+destSheet+'&range=E7";"Editar")');
    }
  }
  
}
函数addHyperlink(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var dataRng=ss.getSheetByName(“Painel de Embarques”).getRange(27,1,ss.getLastRow(),4.getValues();
var rngValues=[];//这仅用于获取非空行
对于(var n=0;您可以使用新的
这并不简单,但例如:

  • 如果在“Painel de Embarques”中单击值为“Editar”的单元格,则可以将相应的行号保存到
  • 当您单击链接时,您将被重定向到另一个单元格-这也将触发选择更改
    onSelectionChange
    ,您可以将相应的事件范围作为事件对象检索
  • 现在,知道您已从“Painel de Embarque”中最后一个选定的单元格重定向到
    E7
    ,您可以从相应的行中检索数据并将其粘贴到“Atualizar Embarque”中
示例脚本:

选择更改功能(e){
如果(e.range.getSheet().getName()=“Painel de Embarques”&&e.range.getValue()=“Editar”){
PropertiesService.getScriptProperties().setProperty(“行”,例如range.getRow());
}else if(e.range.getSheet().getName()=“Atualizar Embarque”&&e.range.geta1符号()=“E7”){
var row=编号(PropertiesService.getScriptProperties().getProperty(“行”);
国际单项体育联合会(世界其他地区){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var数据表=ss.getSheetByName(“Painel de Embarques”);
var valueB=dataSheet.getRange(第2行).getValue();
var valueF=dataSheet.getRange(第6行).getValue();
var destSheet=ss.getSheetByName(“Atualizar Embarque”);
destSheet.getRange(“B19”).setValue(valueB);
destSheet.getRange(“E7”).setValue(valueF);
Logger.log(e.range.getA1Notation());
Logger.log(例如range.getSheet().getName());
Logger.log(e.range.getValue());
}
}
}
  • 请注意,这种方法可能会导致不期望的行为,例如,如果您手动单击进入
    E7
    ,而没有通过单击超链接重定向
  • 如果这对您来说不是一个令人满意的解决方案-您应该考虑另一种方法,例如创建一个按钮并将其删除
  • 在这种情况下,您可以在单击按钮而不是单击超链接时实现重定向和数据复制

你有问题吗?刚刚问过,@Cooper!当用户点击超链接时,谷歌应用程序脚本不会生成触发器。非常感谢。我最终让用户选择他/她想要更新的行,然后点击顶部的按钮,而不是为每行设置链接。这很有效。非常感谢您的详细回复。是的,应用程序用按钮漫游更容易,更不容易出错!