Javascript (したがって Google Apps Script) では、ターゲット オブジェクトがそのメソッドを「持っている」場合にのみメソッドを呼び出すことができます。一部のオブジェクトを混同しているため、エラーが発生しています。オブジェクト タイプは、使用しているメソッドをサポートしていません。(セルジュのコメントに同意!)
あなたが持っているエラーは次のとおりです。
コードの 3 行目でdataLastRow = dataSheet.getLastRow()
Number を生成し、次に を試しdataLastRow.getRange()
ます。ただし、.getRange()
メソッドSheet
です。
後で、destLastRow = destSheet.getLastRow()
別の数値を生成します。次の行には 2 つのエラーがあります。1 つ目は、この Number が配列として扱われることdestLastRow[0]
です。
その行の 2 番目のエラーはRange.setValue()
、未定義の値を呼び出しています。(配列のインデックスが正しくないため未定義です。)
そのすぐ下で、var ID = destLastRow[1]
エラー #2 が繰り返されます。
この編集版では、これらのエラーが削除されています。ロジックに他のエラーがある可能性があり、確かに完全ではありませんが、実行されます。各ステートメントで返されるオブジェクトの種類を示すコメントが追加されました。
function sendData() {
var sourceSS = SpreadsheetApp.getActiveSpreadsheet(); //= Spreadsheet
var dataSheet = sourceSS.getSheetByName("Data"); //= Sheet
var dataLastRow = dataSheet.getLastRow(); //= Number
var dataValues = dataSheet.getRange("A"+(dataLastRow)+":G"+(dataLastRow)).getValues();
//= Array [[]]
var emailSheet = sourceSS.getSheetByName('Emails'); //= Sheet
var recipient = emailSheet.getRange('B2:B22').getValues(); //= Array [[]]
var orgUnit = emailSheet.getRange('A2:A22').getValues(); //= Array [[]]
var destSS = SpreadsheetApp.openById('SHEETID'); //= Spreadsheet
var destSheet = destSS.getSheetByName('Sheet1'); //= Sheet
var destLastRow = destSheet.getLastRow(); //= Number
var type = destSheet.getRange(destLastRow, 0); //= Range
type.setValue('NEW'); //= Range (for chaining)
var ID = destSheet.getRange(destLastRow, 1); //= Range
}
欠陥除去ツールとしてのオートコンプリート
このような状況では、Apps Script Editor のオートコンプリート機能が役に立ちます。エディターは、対象のオブジェクト タイプを判別できると、サポートされているメソッドのリストを提供します。入力を開始すると、次のように表示されますvar dataValues = dataSheet.getR...
。
と入力するとすぐ.
に、エディターはメソッドの長いリストを提供しました。入力する文字が増えるにつれて、リストは短くなり、この時点でさまざまなSheet.getRange()
メソッドが表示されます。
一方、次のように入力すると、次のようになりますvar dataValues = dataLastRow.
。
あまりない。エディターには、このタイプに対して提供するオートコンプリート メソッドがありませんNumber
。編集時にこの動作に慣れていれば、後で PITA 要因が高くなる可能性のある多くの単純なミスを回避できます。