スプレッドシートのデータをslackの指定チャンネルに投稿するスクリプトなのですが、
どうも遅いです。
早くできる箇所があればお教えください。
【概要】
Googleフォームからの回答結果がリンク先のスプレッドシートに集約されます。
1時間に60回答程です。
データ項目数が多い為、データを分けてimportrangeで複数の別ファイルに読み込ませています。
集計結果や投稿内容そのもの等、結果を文字列結合させたセル内容をslackの指定チャンネルに投稿させています。
スクリプトを埋め込んでいる(バインドさせている)ファイルには、queryやimportrange等を多用していますので、
そもそもこの時点で処理に時間が掛かっていることは承知しております。
処理は指定シートで行っており、目視ではデータは表示されているのですが、
処理が遅く、かつ回答も随時増える為、処理が遅延してしまっています。
出来れば投稿から数分以内にはslack投稿させたいです。
※ライブラリとしてSlackAppを使用しています。
function doPost() { var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN'); var app = SlackApp.create(token); var message; var bot_name = "slackのbot名称"; var bot_icon = "https://xxxx.png"; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名を指定しています。"); var columnIVals = sheet.getRange('I:I').getValues(); // I列の値を配列で取得 var ILastRow = columnIVals.filter(String).length; //空白を除き、配列の数を取得 Logger.log(ILastRow); for(var i = 1; i <= ILastRow; i++) { if(!sheet.getRange(i, 12).getValue()){ message = sheet.getRange(i, 11).getValue(); sheet.getRange(i, 12).setValue(true); Logger.log(message); var branch = sheet.getRange(i,8).getValue(); Logger.log(branch); if(branch=="A支店") { app.postMessage("#A支店チャンネル", message, { username: bot_name, icon_url: bot_icon, }) } else if(branch=="B支店") { app.postMessage("#B支店チャンネル", message, { username: bot_name, icon_url: bot_icon, }) } else if(branch=="C支店") { app.postMessage("#C支店チャンネル", message, { username: bot_name, icon_url: bot_icon, }) } else{ app.postMessage("#テスト用チャンネル", message, { username: bot_name, icon_url: bot_icon, }) } } } };
以上です。どうぞよろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー