プロが教えるわが家の防犯対策術!

下記にて スプレッドシートへFormから転記されたものが
先の入力に対し重複している場合に削除させていますが
重複があったことを戻り値として取得したいのです
repart_Delete()を別の関数から呼び出しています
重複があって行が削除されたら その後の処理はさせずに
抜けたいのです

function main (){
repart_Delete() ← 重複があったら 処理Aは実行せず終了したい

処理A・・・
}



function repart_Delete() {
var sheet = sh_res;
var LastRow_res = sh_res.getLastRow();
var range = sheet.getRange(2,1,LastRow_res,13);

range.removeDuplicates([2,3,12,13]);//重複を判定する要素の列
for (var i=LastRow_res;i>=2; i-- ){
// 予約日セルが空白なら削除
if(sheet.getRange(i,3).isBlank()==true){
sheet.deleteRows(i, 1)
}
}
}

PS.

for (var i=LastRow_res;i>=2; i-- ){
// 予約日セルが空白なら削除
if(sheet.getRange(i,3).isBlank()==true){
sheet.deleteRows(i, 1)

この部分は、 行を削除すると 空白行が発生してしまうケースがあり
それでは困るので空白行を削除するものです

質問者からの補足コメント

  • つらい・・・

    力業として
    最終行の取得を 行削除の前後で行い
    比較する方法しかないですかねぇ・・?

    処理を抜ける方法として
    VBAなら Exit SUBですが
    それに相当するものってあるんでしょうか?
    調べても ループを抜ける Break や スルーする
    continueくらいしか 検索でヒットしません

    Exit メソッドってあるんですかね?
    JavaScriptでは
    system.exit というのを見たことがあるんですが・・

      補足日時:2021/04/28 14:56

A 回答 (2件)

No1です。



>Exit メソッドってあるんですかね?
Exitはないと思いますけれど、残りの処理を全部スキップしてよいのなら、
 return;
で、functionを抜けます。

部分的に処理を飛ばしたいのなら、ifなどで分岐するか、breakやラベルの併用で・・・
https://developer.mozilla.org/ja/docs/Web/JavaSc …
    • good
    • 0
この回答へのお礼

return ですか

ありがとうございます

return は 戻り値を取得する際に
使うもの という認識でした。。

お礼日時:2021/04/28 17:58

こんにちは



GASは存じませんけれど・・・

リファレンスによれば、removeDuplicatesの戻り値で、縮小された新しいRangeを取得できるようなので、元のサイズ(行数)と比較すれば重複の有無を判断できるのではないでしょうか?
https://developers.google.com/apps-script/refere …

その後の、空白行の削除をカウントするのかどうかはわかりませんけれど…(質問者様にはわかっているはずなので省略)
    • good
    • 0
この回答へのお礼

回答ありがとうございます
LastRowを拾うとの 大差ないんですね

あまりメリット感じないので 
LastRow_Before
LastRow_After
で比較して判定することにします

処理抜けのみ引き続き回答を求めます

ありがとうございます

お礼日時:2021/04/28 15:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!