排他制御とID生成
function doGet(e) { //ロックサービスの取得 var lock = LockService.getPublicLock(); //lock.waitLock(30000); //最大30秒間ロック //シートを開く var sheet = openSheetFile("/SheetTest/SyncTest").getActiveSheet(); var lastRow = sheet.getLastRow()+1; //最終行+1の取得 var id = getId("TEST_ID"); //連番IDの取得 var date = new Date(); //日付の取得 var msg = "ああああ" Utilities.sleep(Math.random()*3000); //順番が崩れるようにウエイトを行う //シートに一行書き込み(文字列を書き込む場合は'を付ける) sheet.getRange(lastRow,1,1,3).setValues([[id,date,"'"+msg]]); //lock.releaseLock(); //ロックの解除 return ContentService.createTextOutput(id); } function getId(name){ //プロパティサービスの取得 var p = PropertiesService.getScriptProperties(); var id = p.getProperty(name); //プロパティの読み出し if(id == null) id = 1; //プロパティが無ければ初期値1 else id = parseInt(id); //プロパティ(文字列)を整数に変換 p.setProperty(name, id+1); //+1した値を設定 return id;
2019/07/17 22:31