1

私は最初の空の行を見つけ、最初の空の列を見つけてその列にデータを入力するように、スクリプトを使ってデータを入力しようとしています。各行には情報を挿入するための列がいくつかあります。別々の要求で実行されますが、解決しなければならない別の問題がありますが、まだ得られていません。Googleシートスクリプト - プロパティ1.0を読み取れませんか?

var answer = e.parameter["value"] 
    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key")); 
    var sheet = doc.getSheetByName(e.parameter["sheet"]); 
    var row = sheet.getLastRow(); 
    var column = sheet.getLastColumn() 
    var range = sheet.getRange(row, 1, 1, column); 
    var data = range.getValues(); 

    for(var i = 1; i <= column; i++){ 
    if (data[1][i] == "" || data[1][i] == " "){ 
     sheet.getRange(1, i).setValue(answer); 
     break; 
    } 
    } 

それが実行されたとき、私はこのエラーを取得しています:"メッセージ": "未定義から、 " "プロパティ\を読み取ることができません" 1.0 \を、" 名 ":" 例外TypeError"、 "FILENAME": "コード(データベースのマクロ) " "行番号":107、 "スタック":" \ TATコード(データベースマクロ):107(doPostメソッド

EDITED CODE:

for(var i = 1; i <= column; i++){ 
    if (data[i] == ""){ 
     sheet.getRange(row, i).setValue(answer); 
     break; 
    } 
    } 
+0

私は@オースティンを理解するので、最初に "最初の空の行を見つける"方法を見つける必要があり、その後、その行(列)の各セルに移動しますか? –

+0

@oserekよ!あなたはそれを持っています。 –

+1

javascript配列は0ではなく1から始まります。1.アプリケーションスクリプトデバッガを使用してエラーを見つけます。 –

答えて

1

私はどこシートを共有しています範囲A1の最初の空の行(セルの値)をどのように見つけるかを見ることができます:A10

https://docs.google.com/spreadsheets/d/12w3Xi2CsOQ7u0i6gB5T7SWhG5_Kkv_04UJOp2ouNpF0/edit?usp=sharing

function myFunction() { 
    var aa = SpreadsheetApp.getActiveSheet().getRange("A1:A10").getValues(); 
    var ui = SpreadsheetApp.getUi(); 
    var ix = null; 
    for(var i = 0 ; i < aa.length; i++){ 
    if(aa[ i ] == "") { ix = i; break; } 
    } 
    ui.alert("first empty row is: A" + (ix+1)); 
} 

HTH、歓声

1

あなたの問題はここにある:

for(var i = 1; i <= column; i++){ 
    if (data[1][i] == "" || data[1][i] == " "){ // This i believe is your line 107 
     sheet.getRange(1, i).setValue(answer); 
     break; 
    } 
    } 
:@ZigMandelで述べたように

Javascript配列のインデックスは0ではない1から始まりますので、下記のコードを変更

to this:

for(var i = 0; i < column; i++){ 
     if (data[0][i] == "" || data[0][i] == " "){ 
      sheet.getRange(1, i).setValue(answer); 
      break; 
     } 
     } 

このエラーは、この文data​​ [1] [i]のために発生している可能性があります。配列インデックスは0から始まり、このコードから1行が得られます:

var range = sheet.getRange(row, 1, 1, column); 
    var data = range.getValues(); 

したがって、データ[1]は定義されていません。

+0

ありがとうございました。私はコードを少し編集して、私がやろうとしていることとよく一致させました。私は別の問題に遭遇しました。 –

+0

新しいコードでオリジナルの質問を編集しました。現在のところ、私はそれを確認するためにそれを印刷したにもかかわらず、そのデータ[i]が空白であり、[[""、 "、" "]]というものは登録しません。それは空ですが、それは空白であることを特定することではありません。 –

+0

データは2次元配列なので、上記を得ています。 data = [[1,2]、[3,4]]のような2D配列では、data [0] = [1,2]は別の配列であるため、!= ""となります。 –

関連する問題