スキルアップを始める!

【GAS】Exception: The parameters (number[]) don’t match the method signature for SpreadsheetApp.Range.setValues.

GAS(GoogleAppsScript)
この記事は約3分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

GASでスプレッドシートに配列をsetValuesで書き込もうとしたときに発生しました。

Exception: パラメータ(number[])が SpreadsheetApp.Range.setValues のメソッドのシグネチャと一致しません。
Exception: The parameters (number[]) don’t match the method signature for SpreadsheetApp.Range.setValues.

というエラーについて解説します。

GASのスキルアップはここから▼

Amazon.co.jp: EguchiYuuki: Kindleストア
Kindleストア の優れたセレクションでオンラインショッピング。

エラーメッセージが表示された

このようなコードでエラーが表示されました。

function twoDimensionalArray() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("シート1");
  const array = [['A1', 'B1', 'C1'], ['A2', 'B2', 'C2'], ['A3', 'B3', 'C3'], ['A4', 'B4', 'C4']];
  sheet.getRange(1,1,1,3).setValues(array[0]);
}

配列0番目には2次元配列の[‘A1’, ‘B1’, ‘C1’]が入っているはずですが…。なぜ…?

Exception: The parameters (number[]) don’t match the method signature for SpreadsheetApp.Range.setValues.とは?

Exception: The parameters (number[]) don’t match the method signature for SpreadsheetApp.Range.setValues. とは…?

このエラー メッセージは、メソッド呼び出しで指定されたパラメーターの数またはパラメーターの型が、メソッドが受け取ると予想されるパラメーターの数と型を定義するメソッド シグネチャと一致しないことを示します。 メソッド シグネチャには、メソッド名、そのパラメーターの数と型、および戻り値の型が含まれます。

このエラー メッセージは、メソッドが予想とは異なる数または型のパラメーターで呼び出されていることを示しています。 このエラーを修正するには、メソッド シグネチャで定義された正しい数と型のパラメーターでメソッドが呼び出されるようにします。

[rml_read_more]

つまりどういうこと・・・?

データの配列が1次元になっているので、setValuesでエラーが出ているようです。なので、setValuesにどうにかして2次元配列でセットすれば解決しそうです。

  const array = [['A1', 'B1', 'C1'], ['A2', 'B2', 'C2'], ['A3', 'B3', 'C3'], ['A4', 'B4', 'C4']];
  const array2 = [array[0]];
  sheet.getRange(1,1,1,3).setValues(array2);

配列に配列を格納して2次元配列化してみました。

データが書き込まれました!

まとめ

1次元配列でsetValuesを使うと「Exception: The parameters (number[]) don’t match the method signature for SpreadsheetApp.Range.setValues.」が表示されるようです。

その場合は、どうにかして2次元配列でセットしてみるとエラーが消えてセットできるようになります。

URLをコピーしました!