LoginSignup
good55
@good55 (good 55)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GASエラーについて

初心者です。教えてください。

こちらのネットに落ちているコードをコピペして使おうとすると、以下のようなエラーが起きてしまいます。
スプレッド名も入力しているのですが、理由がわかりません。
Exception: The parameters (String,number) don't match the method signature for SpreadsheetApp.Spreadsheet.getRange.

以下コード(http://www.nowhere.co.jp/blog/archives/20200410-232032.html)

function geocoder() {
const START_ROW = 2;
const FACILITY_COL = 1;
const ADDRESS_COL = 2;
const LAT_COL = 3;
const LNG_COL = 4;

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('スプレッドシートのシート名');
var lastrow = spreadsheet.getLastRow();

for(var i=START_ROW; i<=lastrow; i++){

var facility = spreadsheet.getRange(i,FACILITY_COL).getValue();

var geocoder = Maps.newGeocoder();
geocoder.setLanguage('ja');

var response = geocoder.geocode(facility);

if(response['results'][0] != null){
spreadsheet.getRange(i,LAT_COL).setValue(response['results'][0]['geometry']['location']['lat']);
spreadsheet.getRange(i,LNG_COL).setValue(response['results'][0]['geometry']['location']['lng']);
spreadsheet.getRange(i,ADDRESS_COL).setValue(response['results'][0]['formatted_address']);

}
}
}

0

1Answer

コードを見る限り間違いは無いようです。

何かやりたいことがあり、質問にあるコードを元にオリジナルのコードを書いている際のエラーではないかと勝手に予想してお答えいたします。

問題のエラーについてです。

シートが対象になっていれば行列の数字(1,1 とか)でgetRange()できますが、スプレッドシートが対象になっているとセル番号(A1 など)でしかgetRange()できず質問と同じエラーが出ます。また、どちらの場合でもgetLastRow()はエラーになりません。

例えば

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('シート名');

のようにコードが分かれていて、spreadsheetに対してコピペのコードを使っていると同じエラーが出ます。何か心当たりはないでしょうか。

この場合spreadsheet.getRange()sheet.getRange()に直せばエラーは解消されます。

見当違いであればごめんなさい<(_ _)>

2

Comments

  1. @good55

    Questioner
    返信ありがとうございました。はい,getRangの使い方でエラーが生じていたようです!!勉強になりました!!!
  2. お役に立てたようで良かったです^^)b

Your answer might help someone💌