Google Formで発注し、それをGoogle Spread Sheetに送り、
Google Spread Sheetの別ページでその情報を加工し記録しています。
この注文を確認するために、
「一番最後の行をとってきて、加工してSlackに投げる」という作業をGoogle Apps Script (GAS)を使って行っています。
トリガーの設定は(実行: showStatus, トリガー: フォームからフォーム送信時)となっています。
ほとんど場合、問題なく動作するのですが、最初の一回目だけどうしてもうまくいきません。
どうやらフォームからの情報が反映されず、前回の注文がSlackに送られているようです。2回目以降は問題なく動きます。
フォームからGoogle spread sheetへの情報の反映が遅いのかと思い、
待ちの処理やシートの再描画等をやってみましたが、効果が無く、問題が改善しません。
もし何かご存知の方がいたらご教示願えないでしょうか?
よろしくお願いいたします。
1function showStatus(){ 2 Utilities.sleep(1000); // シートの処理完了を待つ 3 SpreadsheetApp.flush(); // シートの再描画 4 5 var spreadSheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXXX'); // 取り扱いたいスプレッドシートのURL 6 var sheet = spreadSheet.getSheets()[0]; //1ページ目のシートを取得 7 var num=sheet.getLastRow() 8 9 Utilities.sleep(1000); // シートの処理完了を待つ 10 SpreadsheetApp.flush(); // シートの再描画 11 12 var sheet = spreadSheet.getSheets()[2]; //3ページ目のシートを取得 13 var lastrow = sheet.getLastRow(); 14 var text = '【注文者】 ' + sheet.getRange(num,2).getValue() + ' 【業者】 ' + sheet.getRange(num,13).getValue() + String.fromCharCode(10) + 15 '【品名】 ' + sheet.getRange(num,14).getValue() + String.fromCharCode(10) + 16 '【メーカー】 ' + sheet.getRange(num,15).getValue() + String.fromCharCode(10) + 17 '【型番】 ' + sheet.getRange(num,16).getValue() + ' 【個数】 ' + sheet.getRange(num,17).getValue() + String.fromCharCode(10) + 18 '【コメント】 ' + sheet.getRange(num,18).getValue() + String.fromCharCode(10) + 19 '発注は https://goo.gl/WSYn11' ; 20 21 22 slackPost() ; 23 24 25 function slackPost(){ 26 var url = 'https://slack.com/api/chat.postMessage'; 27 var token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXx'; 28 var channel = '#09_order'; 29 var username = 'Order'; 30 var parse = 'full'; 31 var icon_emoji = ':smile:'; 32 var method = 'post'; 33 var payload = { 34 'token' : token, 35 'channel' : channel, 36 'text' : text, 37 'username' : username, 38 'parse' : parse, 39 'icon_emoji' : icon_emoji 40 }; 41 var params = { 42 'method' : method, 43 'payload' : payload 44 }; 45 var response = UrlFetchApp.fetch(url, params); 46 } 47}