これは私の最後の質問とは少し異なりますが、そのコードをこれに転送することはできません。
シート 1 には、会社名を持つ個々の連絡先があります。各個人には 1 つの名前がありますが、会社名は、シート内の個人の数に基づいて複数回表示される場合があります。そう:
Name Company Work Address
John Smith ABC Company
Jim Smith XYZ Company
Bob Smith ABC Company
シート 2 には、職場の住所を持つ会社があります。
Company Work Address
ABC Company 1234 Street, USA
XYZ Company 5678 Street, USA
会社の住所が個人の連絡先シートに移動するようにスクリプトを作成するにはどうすればよいですか?
配列を使用して、行/列のインデックスを検索しようとしましたが、何か不足しています。このコードは私に最も近いものですが、うまく機能させることはできません (コードの列と行の番号はサンプルと一致しません。それらは私が作業しようとしている現在の配列にすぎません):
function populateCofieldsincontact() {
var writeSheet = sskey.getSheetByName('POCs');
var sourceSheet = sskey.getSheetByName('Businesses');
var writeData = writeSheet.getRange(1, 6, writeSheet.getLastRow(), 5).getValues();Logger.log(writeData)
for (var w = 0; w < writeData.length; w++ ) {
var sourceData = sourceSheet.getRange(1, 2, sourceSheet.getLastRow(), 3).getValues();
var dest = [];
for (var i = 0; i < sourceData.length; i++ ) {
if (writeData ==sourceData[i][0].toString().match(writeData)) {
dest.push(sourceData[i][2]);
}
}
}
if (dest.length > 0 ) {
writeSheet.getRange(2,10,dest.length,1).setValue(dest.toString());
}
}
どんな助けでも大歓迎です!
クイック更新 - setValue (何らかの理由で機能しない setValues ではない) を取得し、正しい列にアドレスを書き込むことができますが、ループで書き込むために考えることができる唯一の方法は、getLastRow を使用することでした。シートに対してそれを行う方法を知っているだけです。したがって、すべてのアドレスを正しい列に配置することになりますが、実際のデータがある場所の一番下から始まる行に書き込まれます。一番上の行に書き込み、次に下に書き込む方法がわかりません。
FINAL (願わくば) コード: @Adamのコードの 13 行[w][0]
目の 2 番目の言及の隣に挿入しwriteData
ましたが、いくつかのテストの後、動作しているようです。ありがとう@Adamと@Serge!!:
function populateCofieldsincontact() {
var writeSheet = sskey.getSheetByName('POCs');
var sourceSheet = sskey.getSheetByName('Businesses');
var writeData = writeSheet.getRange(2, 6, writeSheet.getLastRow() - 1).getValues();
var sourceData = sourceSheet.getRange(2, 2, sourceSheet.getLastRow(), 12).getValues();
var dest = [];
var temp;
for (var w = 0; w < writeData.length; w++) {
temp = null;
for (var i = 0; i < sourceData.length; i++) {
if (writeData[w][0] == sourceData[i][0].toString().match(writeData[w][0])) {
temp = sourceData[i][11];
break;
}
}
dest.push([temp]);
}
if (dest.length > 0 ) {
writeSheet.getRange(2, 13, dest.length, 1).setValues(dest); Logger.log(dest)
}
}