スクリプト実行時の他ユーザーの制御の必要性について

2,298 views
Skip to first unread message

にんまりpapa

unread,
Nov 26, 2014, 10:42:29 PM11/26/14
to google-app...@googlegroups.com


GAS初級者です。

利用者10数人程度でスプレッドシートを共有し、特定のオペレータが定期的にスクリプトを実行し、シートを更新する仕組みを導入予定です。

あるユーザーがシートを閲覧または編集しているときに、オペレータがスクリプトを実行すると閲覧中または編集中のユーザーの画面は更新された画面に逐次変化します。

ユーザーにはスクリプト実行中は画面が勝手に変化することを理解してもらう必要はあると思いますが、
システム的には、どのような問題が発生する可能性があるでしょうか?

スプレッドシートには排他制御という仕組みはないようですが、なんらかのユーザー制御をする必要性はあるのでしょうか?

ごく一般的なスプレッドシートの使い方だと思いますが、運用面も含め注意すべきことがありましたら、どなたかご教示下さい。

dainnne

unread,
Dec 3, 2014, 2:27:33 PM12/3/14
to google-app...@googlegroups.com
このサイトに失敗例が書いてあります。

アドインやメニューを追加してユーザーにスクリプトの処理を同時にさせると処理が重複するので、


 var lock = LockService.getPublicLock();  
  try{
    //30秒間ロック
    lock.waitLock(30000);
   var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
 
    //最終行から書き込み開始
    var start = sheet.getLastRow()+1;
    for(var i=0; i<events.length; i++){
      sheet.getRange('A'+(start+i)).setValue(hoge[i].getTitle());
    }  
 
    //ロックを解除
    lock.releaseLock();
    Browser.msgBox('書き込み完了!');

のようにした方がいいですね。




2014年11月27日木曜日 12時42分29秒 UTC+9 にんまりpapa:

にんまりpapa

unread,
Dec 3, 2014, 9:55:43 PM12/3/14
to google-app...@googlegroups.com
dainnne 様
ご教示ありがとうございます。

ご紹介頂いた記事も含め大変参考になります。

いまのところ、複数のユーザーからのスクリプト起動はないので、運用しながら様子をみていくようにしたいと思います。
ただ、2人のオペレータが交替で処理する運用にしているため、万一同時に起動する可能性がある場合は、ご教示頂いた方法や記事を参考に対応したいと思います。




2014年12月4日木曜日 4時27分33秒 UTC+9 dainnne:
Reply all
Reply to author
Forward
0 new messages