4

これは私の最初の投稿です。Google とこのサイトで検索してみましたが、特にこのシナリオでの GAS 内での型キャストまたは数値の変換に関する情報は実際には見つかりませんでした。だからここで問題:

Google スプレッドシートに添付された非常に基本的なスクリプトがあります。スクリプトは、入力された最後の行を追跡し、値を 1 ずつ増やして、次の行に入力できるようにします。「最後に使用した行」をプロジェクト プロパティとして保存しています。何らかの理由で、スクリプトはプロジェクトのプロパティに値を 10 進数値として書き戻し続けます。これにより、10 進数値を使用してセルの位置を参照できないように見えるため、スクリプト全体が中断されます。

コード スニペットは次のとおりです。

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var value = ss.getSheetByName("Sheet1").getRange("D13").getValue().toString();
  var last = ScriptProperties.getProperty("last");

  var therowx = parseInt(ScriptProperties.getProperty("therow"));
  Browser.msgBox("The last row is: " + therowx);

  if( value != last ) {
    ScriptProperties.setProperty("last", value);
    ScriptProperties.setProperty("therow", therowx + 1);
  }
}

スクリプトを実行する前にプロパティを 1 に事前設定したと仮定すると、このメソッドが起動すると、2 ではなく 2.0 に設定されます。メソッド呼び出しを Number() および parseInt() 関数でラップしようとしましたしかし、それらは違いを生むようには見えません。

私は何か間違ったことをしていると確信していますが、何がよくわからないので、提案を受け付けています。

4

1 に答える 1

0

var value = ss.getSheetByName("Sheet1").getRange("D13").getValue().toString(); でスプレッドシートの値を使用しているように見えます。
これは、Google スプレッドシートがデフォルトで小数点以下 1 桁になるため、小数点を取得している場合です。列またはセルを強調表示し、フォーマットを Number>Rounded に変更して削除する必要があります。
ここで完全なスクリプトのいくつかのコンポーネントが欠落していると確信していますが、「getLastRow」関数を試しましたか? チュートリアルにはそれを使用するスクリプトがいくつかあり、シートの最後の行を見つけるための試行錯誤された真の方法です。

于 2012-10-24T02:25:48.413 に答える