顧客の住所等のデータを別シート(請求書シート)のセルに入力するボタンを作っています。
顧客データの左端にあるチェックボックスに、チェックを入れてボタンを押すと入力される想定です。
現在「例外:データの行数が範囲の行数と一致しません。 データは0ですが、範囲は1です。」とのメッセージが出て、別シートに値を入力する工程で止まります。
function seyq() { var Spredsheet=SpreadsheetApp.getActiveSpreadsheet();//使用中のスプレッドシート取得 var Sheet=Spredsheet.getActiveSheet();//使用中シートの取得 var Seyqsheet=Spredsheet.getSheetByName("請求書");//請求書シートの取得 var LastRow=Sheet.getLastRow(); var Checkcell=Sheet.getRange(2,1,LastRow-1,1).getValues();//チェックボックスの範囲、範囲内の値を取得 var Number=[] var Preis=[] var Name=[] for(var i in Checkcell){//ture検索の繰り返し、範囲 if(Checkcell[i][0]==true){//チェック範囲にtureがあったとき Number.push(Sheet.getRange(parseInt(i)+2,2).getValue())//郵便番号取得 Preis.push(Sheet[i][2])//住所取得 Name.push(Sheet[i][3])//社名取得 } } Seyqsheet.getRange(3,1).setValues(Number);//郵便番号入力 //Seyqsheet.getRange("B4:D5").setValues(Preis);//住所入力 //Seyqsheet.getRange("B6:D6").setValues(Name);//社名入力 }
郵便番号がまず入れられないので住所・社名は一旦メモにしてあります。
ご回答お願いします。
*ご指摘いただいた箇所を修正しました。表示エラーは変わっていません。*
現状のエラーはif文が機能していなくNumberに何もないため発生しています。
またfor文の中に宣言が入っちゃってるので↓のような感じになるのではないでしょうか
var LastRow=Sheet.getLastRow();
var Checkcell=Sheet.getRange(2,1,LastRow-1,1).getValues();//チェックボックスの範囲、範囲内の値を取得
var Number=[]
var Preis=[]
var Name=[]
for(var i in Checkcell){//ture検索の繰り返し、範囲
if(Checkcell[i][0]==true){//チェック範囲にtureがあったとき
Number.push(Sheet.getRange(parseInt(i)+2,2).getValue())//郵便番号取得
//Preis.push(Sheet.getRange(i,3))//住所取得
//Name.push(Sheet.getRange(i,4))//社名取得
}
}
回答1件
あなたの回答
tips
プレビュー