2016-04-01 12 views
0

私は食糧ロガーを作った。そして私はSheet [1]に行を追加し、新しいfoodourceを追加するスクリプトを作成しようとしています。このコードは動作しますが、実行が非常に遅いです。各質問の間には約2秒間あります。実行を高速化する可能性はありますか、あるいは1つのプロンプトで4つの値すべてを尋ねることは可能でしょうか?非常に遅いユーザーインプットGoogleスクリプト

// Display a dialog box with a title, message, input field, and "Yes" and "No" buttons. The 
// user can also close the dialog by clicking the close button in its title bar. 
function foodSource(){ 
var ui = SpreadsheetApp.getUi(); 
    var response = ui.prompt('Tilføjelse af madvare', 'Hvilken madvare er det?', ui.ButtonSet.OK); 
    return response.getResponseText(); 
} 
function protein(){ 
var ui = SpreadsheetApp.getUi(); 
    var response = ui.prompt('Mængde pr 100 gram', 'Protein', ui.ButtonSet.OK); 
    return response.getResponseText(); 
} 
function carbonhydrates(){ 
var ui = SpreadsheetApp.getUi(); 
    var response = ui.prompt('Mængde pr 100 gram', 'Kulhydrater', ui.ButtonSet.OK); 
    return response.getResponseText(); 
} 
function fat(){ 
var ui = SpreadsheetApp.getUi(); 
    var response = ui.prompt('Mængde pr 100 gram', 'Fedt', ui.ButtonSet.OK); 
    return response.getResponseText(); 
} 



function addData(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[1]; 

sheet.appendRow([madvare(),100, protein(), carbonhydrates(), fat()]); 
} 

答えて

0

各API呼び出しには時間がかかるため、スクリプトを高速化してAPI呼び出しを減らす必要があります。

公開されているコードには、それぞれがSpreadsheetApp.getUIを呼び出す3つの関数があります。実行時間は、変更されていないため1つだけを使用して減らすことができます。上記を行うため

一つの方法は、(これは試験しなかった)第1に、この3つの機能を統合することである。

 
// Display a dialog box with a title, message, input field, and "Yes" and "No" buttons. The 
// user can also close the dialog by clicking the close button in its title bar. 

function addData(){ 

    /* 
    * Get ui only once 
    */ 
    var ui = SpreadsheetApp.getUi(); 

    //Get foodsource 
    var response = ui.prompt('Tilføjelse af madvare', 'Hvilken madvare er det?', ui.ButtonSet.OK); 
    var foodsource = response.getResponseText(); 

    //Get protein 
    var response = ui.prompt('Mængde pr 100 gram', 'Protein', ui.ButtonSet.OK); 
    var protein = response.getResponseText(); 

    // Get carbohydrates 
    var response = ui.prompt('Mængde pr 100 gram', 'Kulhydrater', ui.ButtonSet.OK); 
    var carbonhydrates = response.getResponseText(); 

    //Get fat 
    var response = ui.prompt('Mængde pr 100 gram', 'Fedt', ui.ButtonSet.OK); 
    var fat = response.getResponseText(); 

    //Append a row with the collected data 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[1]; 
    sheet.appendRow([foodsource,100, protein, carbonhydrates, fat]); 
}