2016-08-08 40 views
0

Ich bin ein absoluter Anfänger der Webentwicklung. Ich möchte Google Apps Script Execution API in mein Projekt implementieren.Google Apps Skriptausführungs-API: Skriptfehlermeldung: Skriptfunktion nicht gefunden: 【JavaScript】

Ich habe zwei Fragen zu Google Apps Script Execution API zu stellen.

(1) Ich habe keine Ahnung, wie man den Fehler unten löst.

Script error message: Script function not found: make_date_array(month)

Obwohl mein Google Apps Script die Funktion 'make_date_array (Monat)' in ihm, über die Fehler kommt, wenn ich rufe google Ausführung api apps. Also ich weiß einfach nicht was ich machen soll.

function send_mail() { 
    var date = new Date() 
    date.setDate(new Date().getDate()) 
    date = date.getFullYear() + "-" + zero_padding(date.getMonth() + 1) 
    runSingleRowQuery(0, date) 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = spreadsheet.getSheetByName("Data"); 
    var message = ""; 
    var tmp_message = sheet.getRange(1,1,58 ,2).getValues(); 

    for(var i = 0;i < tmp_message.length ;i++){ 
    message += tmp_message[i][0] + ":" + tmp_message[i][1] + "<br>" 
    } 

    MailApp.sendEmail({ 
     to: 'I put my email address here' 
     subject: 'BigQuery', 
     htmlBody: message 
    });  
} 

function runSingleRowQuery(develop_mode, target_month) { 
    // Replace this value with the project ID listed in the Google 
    // Developers Console project. 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var queries_sheet = spreadsheet.getSheetByName("Single row queries"); 
    var result_sheet = spreadsheet.getSheetByName("Data"); 

    if(target_month == null){ 
     var target_month = queries_sheet.getRange(1, 2).getValue(); 
    } 
    make_date_array(target_month); 

    result_sheet.getRange(1, 2).setValue(queries_sheet.getRange(1, 2).getValue()) 
    for (var i = 2; i <= queries_sheet.getLastRow(); i++) { 
     var query = queries_sheet.getRange(i, 2).getValue(); 
     if (query_variation(query) != false) { 
      query = query_variation(query) 

      Logger.log(queries_sheet.getRange(i, 1).getValue()); 
      Logger.log("# run query: \n " + query); 

     if (develop_mode != 1) { 
      Logger.log('\n#####################Run Query#########################'); 
      var request = { 
       query: query 
      }; 
      var queryResults = BigQuery.Jobs.query(request, projectId); 
      var jobId = queryResults.jobReference.jobId; 

      // Check on status of the Query Job. 
      var sleepTimeMs = 500; 
      while (!queryResults.jobComplete) { 
       Utilities.sleep(sleepTimeMs); 
       sleepTimeMs *= 2; 
       queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId); 
      } 

      // Get all the rows of results. 
      var rows = queryResults.rows; 
      while (queryResults.pageToken) { 
       queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, { 
        pageToken: queryResults.pageToken 
       }); 
       rows = rows.concat(queryResults.rows); 
      } 
      result_sheet.getRange(i, 2).setValue(rows[0].f[0].v); 

      result_sheet.getRange(i, 1).setValue(queries_sheet.getRange(i, 1).getValue()); 
      result_sheet.getRange(i, 3).setValue(queries_sheet.getRange(i, 3).getValue()); 
     } 
    } 
    else { 
     result_sheet.getRange(i, 1).setValue(queries_sheet.getRange(i, 1).getValue()); 
     result_sheet.getRange(i, 2).setValue(queries_sheet.getRange(i, 2).getFormula()); 
     } 
    } 
} 

function make_date_array(month) { 
    month = month.split('-'); 
    var last_month = {}; 
    var more_last_month = {}; 
    Logger.log((parseFloat(month[0] - 1).toFixed(0))) 
    if (parseFloat(month[1] - 1).toFixed(0) < 1) { 
     last_month[0] = (parseFloat(month[0]) - 1).toFixed(0); 
     last_month[1] = 12; 
    } else { 
     last_month[0] = (parseFloat(month[0])).toFixed(0); 
     last_month[1] = (parseFloat(month[1]) - 1).toFixed(0); 
    } 
    if (last_month[1] < 10) { 
     last_month[1] = '0' + last_month[1]; 
    } 

    if (parseFloat(last_month[1] - 1).toFixed(0) < 1) { 
     more_last_month[0] = (parseFloat(last_month[0]) - 1).toFixed(0); 
     more_last_month[1] = 12; 
    } else { 
     more_last_month[0] = (parseFloat(last_month[0])).toFixed(0); 
     more_last_month[1] = (parseFloat(last_month[1]) - 1).toFixed(0); 
    } 
    if (more_last_month[1] < 10) { 
     more_last_month[1] = '0' + more_last_month[1]; 
    } 

    date_array['Ym01'] = month[0] + month[1] + '01'; 
    date_array['last_Ym01'] = last_month[0] + last_month[1] + '01'; 
    date_array['more_last_Ym01'] = more_last_month[0] + more_last_month[1] + '01'; 
    date_array['y-m-10_h:s'] = month[0] + '-' + month[1] + '-' + '10 00:00'; 
    date_array['last_y-m-10_h:s'] = last_month[0] + '-' + last_month[1] + '-' + '10 00:00'; 
    date_array['more_last_y-m-10_h:s'] = more_last_month[0] + '-' + more_last_month[1] + '-' + '01 00:00'; 
    date_array['y-m-10'] = month[0] + '-' + month[1] + '-' + '10'; 
    date_array['last_y-m-10'] = last_month[0] + '-' + last_month[1] + '-' + '10'; 

    Logger.log(date_array['last_y-m-10']) 
} 

(2) Weiß jemand, wie ich mehrere Funktionen aufrufen soll? Ich habe den Beispielcode von Google verwendet. Ich bin mir jedoch nicht sicher, ob ich dem richtigen Weg folge, um mehrere Funktionen aufzurufen.

// Create an execution request object. 
    var request = { 
     'function': 'send_mail', 
     'function': 'runSingleRowQuery(develop_mode, target_month)', 
     'function': 'make_date_array(month)', 
     }; 

Wenn Sie vorher ähnliche Probleme hatten, könnten Sie bitte helfen, die beiden obigen Probleme zu lösen? Englisch ist nicht meine Muttersprache. Wenn dieser Beitrag für Sie keinen Sinn ergibt oder Sie weitere Informationen benötigen, hinterlassen Sie bitte Ihre Kommentare. Jede Beratung wäre willkommen. Danke im Voraus.

+0

siehe http://stackoverflow.com/questions/22617138 ändern/google-apps-script-funktion-nicht-gefunden-doget – Eugene

Antwort

1

In weiteren im Kommentar zu verbinden Ich denke, das Code

if(target_month == null){ 
     var target_month = queries_sheet.getRange(1, 2).getValue(); 
    } 

Sie müssen (keine var)

if(target_month == null){ 
     target_month = queries_sheet.getRange(1, 2).getValue(); 
    }