Google apps script 连接几个单元格并从连接中创建链接

Google apps script 连接几个单元格并从连接中创建链接,google-apps-script,google-sheets,spreadsheet,Google Apps Script,Google Sheets,Spreadsheet,我试图创建一个脚本,其中假设 第一列包含地址 第J列包含城市 K列包含邮政编码 假设有数千个条目 我想要一个脚本,将这些值连接起来,并在列I本身上创建一个谷歌地图链接 我确实设法使链接部分工作,但在创建链接之前无法使其连接起来 function googlemaps() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var r = ss.getActiveRange() + ss.getActiveRange().offset(0, 0, 1

我试图创建一个脚本,其中假设 第一列包含地址 第J列包含城市 K列包含邮政编码 假设有数千个条目

我想要一个脚本,将这些值连接起来,并在列I本身上创建一个谷歌地图链接

我确实设法使链接部分工作,但在创建链接之前无法使其连接起来

function googlemaps() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getActiveRange() + ss.getActiveRange().offset(0, 0, 1, 2);
// var t = r.offset(1, 0, 2);
var v = r.getValues();
for(var i=0;i<v.length;i++) {
for(var j=0;j<v[0].length;j++) {
  v[i][j] = '=HYPERLINK("http://google.com/maps/places/'+v[i][j]+'","'+v[i][j]+'")'
  }
 }
r.setValues(v);  
};
我知道这是补偿,但我不能让它工作。 我想要的一个例子是

I3 = 1515 SW 2 CT
J3 = Miami
K3 = 33196
随着这个脚本的运行,它将在

=hyperlink("http://google.com/maps/places/1515 SW 2 CT Miami 33196", "1515 SW 2 CT")
应该能够在一个范围内工作

任何人都请帮忙

我也试过这个:

function googlemaps() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getActiveRange();
var r2 = ss.getActiveRange().offset(0, 1);
var r3 = ss.getActiveRange().offset(0, 2);
var v = r.getValues();
var v1= r2.getValues();
var v2= r3.getValues();
var vf= v + v1 + v2;
for(var i=0;i<vf.length;i++) {
for(var j=0;j<vf[0].length;j++) {
  vf[i][j] = '=HYPERLINK("http://google.com/maps/places/'+vf[i][j]+'","'+vf[i][j]+'")'
}
}
r.setValues(vf);  
};
函数googlemaps(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getActiveRange();
var r2=ss.getActiveRange().offset(0,1);
var r3=ss.getActiveRange().offset(0,2);
var v=r.getValues();
var v1=r2.getValues();
var v2=r3.getValues();
var vf=v+v1+v2;

对于(var i=0;i,您也可以使用一个公式来实现这一点

I3 = 1515 SW 2 CT
J3 = Miami
K3 = 33196
L3 = =HYPERLINK(CONCATENATE("http://maps.google.com/maps?   f=q&source=s_q&hl=en&geocode=&q=",I3," ",J3," ",K3),"Google Map")
对不起,我不明白你的要求。试试这个

function googlemaps() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow()
var r = ss.getSheetValues(3,9,lr-2,3);//Assunes address data starts on row 3
for(var i=0;i<lr-2;i++) {
var addr = r[i][0]+' ' +r[i][1]+' ' +r[i][2] // Concatenates address data
r[i][9] = '=HYPERLINK("http://maps.google.com/maps?   f=q&source=s_q&hl=en&geocode=&q='+addr+'","'+addr+'")'
ss.getRange(i+3,9).setFormula(r[i][9]);
ss.getRange(i+3,10).clear(); //Clears City
ss.getRange(i+3,11).clear(); //Clears Zip
}
};
函数googlemaps(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr=ss.getLastRow()
var r=ss.getSheetValues(3,9,lr-2,3);//Assunes地址数据从第3行开始

对于(var i=0;iI不幸不能这样做,因为这些数据是从另一个插件中提取的,我不能更改或添加任何列。我最初想这样做,但没有什么效果,但我们能让它在我选择的范围内运行,而不是让它从开始一直运行到最后一行吗?因为我有7000个条目,需要永远运行下去run.I将var lr=ss.getLastRow()更改为var lr=ss.getactiveRange(),但它给了我无法将NaN转换为(类)的信息,我将其更改为var lr=ss.getactiveRange().getLastRow()它是有效的,现在唯一的问题是它总是从第3行开始处理这个修订。它会更快。如果你有问题,请告诉我。另一个问题。起始行有什么问题?是否在你已经转换的超链接列表的末尾添加了新地址?如果是,我可以告诉你如何找到新的起始行。如果你可以ost示例电子表格它将帮助解决您的问题。我认为选择活动范围将导致范围大小发回阵列时出现问题。
function googlemaps() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow()
var r = ss.getSheetValues(3,9,lr-2,3);//Assunes address data starts on row 3
for(var i=0;i<lr-2;i++) {
var addr = r[i][0]+' ' +r[i][1]+' ' +r[i][2] // Concatenates address data
r[i][9] = '=HYPERLINK("http://maps.google.com/maps?   f=q&source=s_q&hl=en&geocode=&q='+addr+'","'+addr+'")'
ss.getRange(i+3,9).setFormula(r[i][9]);
ss.getRange(i+3,10).clear(); //Clears City
ss.getRange(i+3,11).clear(); //Clears Zip
}
};
function googlemaps1() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr = ss.getLastRow()
var r = ss.getSheetValues(2,9,lr-1,3);//Assunes address data starts on row 2
var arr = []
for(var i=0;i<lr-1;i++) {
var addr = r[i][0]+' ' +r[i][1]+' ' +r[i][2] // Concatenates address data
r[i][9] = '=HYPERLINK("http://maps.google.com/maps? f=q&source=s_q&hl=en&geocode=&q='+addr+'","'+addr+'")'
 arr.push([r[i][9]])
 }
 var clr =  ss.getRange(2,10,arr.length,2).clear();//clear state and zip
 var destrange = ss.getRange(2,9,arr.length,1);
 destrange.setFormulas(arr);// set all hyperlinks
 };