我正在尝试创建一个假设的脚本 第一列包含地址 J列包含City 列K包含邮政编码 假设有数千个条目
我想要一个可以连接这些值的脚本,并在第一列上创建一个谷歌地图链接。
我确实设法让链接部分部分工作,但在创建链接之前无法将其连接起来。
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);
};
它一直给我这个错误
// typeError: Cannot find function getValues in object RangeRange
我知道这是偏移的东西,但我无法让它发挥作用。 我想要的一个例子是
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);
};
那也行不通,给我错误找不到方法setValues(string)
答案 0 :(得分:0)
你也可以只用公式来做到这一点。
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
}
};
这是另一个版本,而不是创建超链接数组并将它们一次写回,而不是一次写入一行。它要快得多。我用4000个地址测试了它。此外,我将其更改为从第2行开始(假设标题行)。如果您需要调整它的起始位置,请使用Google setRange(1,1,1,1)表示法来解释每个数字的含义。它控制起始行。如果更改起始行,则需要更改lr-1,以便总行数正确。
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
};