私が取り組んでいる Google Apps Script Web App に関して、ここ数日でいくつかの質問を投稿しました。これまでのところ、ここの Serge は非常に役に立ちました。そのスクリプトに関する投稿はこちらです。
そのスクリプトに列を追加してuniqueIDカウンターを生成することを検討しています。これにより、新しいフォームが送信されると、カウンターは以前のuniqueIDを参照し、1ずつ増加します。アイデアは、ヘッダー行のある空白のスプレッドシートです。スクリプトはフォームの送信時に実行されます。A2 が空白で 1 が挿入されていることがわかります。次に送信されたフォームでは、A2 に 2 が表示され、1 が追加され、A3 に 3 が追加されます。
現在、セル内の数値に1を追加するカウンターだけに取り組んでいます。この作品を開発するときは、最後の行を取得し、セルの値を見つけて追加する必要があることを知っていますが、私は GAS に慣れていないため、自分自身を学びながら、ゆっくりと構築しようとしています。へ、まあ、あなたはアイデアを得る。
これが基本的なスタートであり、これが正しい方向性であるかどうか、フィードバックを得たいと思っていました..
function counter() {
//Grabs the range and pinpoint cell
var ssRange = SpreadsheetApp.getActiveSheet().getRange(1,1,1,1);
//Grab the cell value of A1
var value = ssRange.getValue();
//if statement to check value in A1 and if it is null, undefined, false, 0, NAN
if (!value) {
//if the cell is null, undefined, false, 0, NAN sets value to 1
var setCell = ssRange.setValue(1);
}
//if not updates the cell by getting the value and adding 1 to it
else {
var updateCell = ssRange.setValue(value + 1);
}
}
編集 (.setProperty & .getProperty の Phil Bozak のヒントを使用するようにコードを更新
あなたが言及したように、スプレッドシートに挿入されたMYIDが手動で変更された場合、このコードがどのように処理されるかをまだテストしています。MYID が一意であることを確認する必要があります。それについて考える必要があります..ここにコードがあります..フィードバックは大歓迎です!
function counter2() {
//Get the spreadsheet, range, and value of first cell in range
var sSheet = SpreadsheetApp.getActiveSheet();
var ssRange = sSheet.getRange(1,1,1,1);
var ssValue = ssRange.getValue();
var setUniqueID = ScriptProperties.setProperty("MYID",1);
var getUniqueID = ScriptProperties.getProperty("MYID");
//will set value of first cell to 1 if null, undefined, false, 0, NAN etc.. (runs in if //statement)
var setOne = ssRange.setValue(getUniqueID);
if (!ssValue) {
setOne;
}
else {
//This goes back and get the range, lastrow of range, and value of first cell in range of last row & adds 1 to that value
var setLast = sSheet.getRange(lastRow+1,1,1,1).setValue(getUniqueID + 1);
setLast;
}
}