Google apps script 带有超链接的单元格,用于使用google工作表(脚本)中的相邻行数据填充目标工作表
下面的代码向a列中的单元格添加了一个链接,当单击该链接时,会将用户带到另一个工作表中的单元格E7。 现在已设置链接的列也有两个相邻列(B和F),当用户单击特定行上的链接时,其行数据应填充目标工作表中的单元格B19和E7Google 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"
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!当用户点击超链接时,谷歌应用程序脚本不会生成触发器。非常感谢。我最终让用户选择他/她想要更新的行,然后点击顶部的按钮,而不是为每行设置链接。这很有效。非常感谢您的详细回复。是的,应用程序用按钮漫游更容易,更不容易出错!