2017-02-16 1 views
0

У меня есть форма Google, которая захватывает ответы в электронной таблице. В настоящее время он создает новый лист каждый раз, когда создается новый ответ.Отправка активного листа в виде вложения электронной почты из листов google

Теперь я пытаюсь добавить «почтовый сценарий активного листа» к существующему скрипту, который создает новый лист.

Однако я получаю сообщение об ошибке «Не удалось выполнить запрос для https://docs.google.com/spreadsheets/d/SS_ID/export?» вокруг следующего

var result = UrlFetchApp.fetch(url, { 
     headers: { 
     'Authorization': 'Bearer ' + token 
     } 
    }); 

Я использовал эту статью как guide для отправки электронной части.

Это весь сценарий, который я использую.

function onSubmit(e){ 
    Logger.log('submit ran'); 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 

    //Get last row of data 
    var lastRow = sheet.getLastRow(); 
    var colB_Data = sheet.getRange(lastRow, 2).getValue(); 

    //create sheet name with order no. 
    ss.insertSheet(colB_Data); 

    //order formula 
    var sheets = ss.getSheets()[1]; 

    var cell = sheets.getRange("b2"); 
    cell.setFormula("=TRANSPOSE('Form Responses 1'!B1:AR1)"); 

    var cell = sheets.getRange("c2"); 
    cell.setFormula("=sheetName()"); 

    var cell = sheets.getRange("c3"); 
    cell.setFormula("=transpose(FILTER('Form Responses 1'!C:AR,'Form Responses 1'!B:B=C2))"); 

    var cell = sheets.getRange("d5:d44"); 
    cell.setFormula("=C5*vlookup(B5,'RG Cost'!B:E,4,0)"); 

    var cell = sheets.getRange("d5:d44"); 
    cell.setNumberFormat("[$₹][>9999999]##\,##\,##\,##0;[$₹][>99999]##\,##\,##0;[$₹]##,##0") 

    var cell = sheets.getRange("c47"); 
    cell.setFormula("=sum(C5:C44)"); 

    var cell = sheets.getRange("d47"); 
    cell.setFormula("=sum(D5:D44)"); 

    var cell = sheets.getRange("b47"); 
    cell.setValue('TOTAL'); 


    //Send active sheet as email attachment 

    var ssID = SpreadsheetApp.getActiveSpreadsheet(); 
    var email = Session.getUser().getEmail(); 
    var subject = "Order no."; 
    var body = "Hello"; 

    var token = ScriptApp.getOAuthToken(); 


    var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?" + "format=xlsx" + "&gid=" + "&portrait=true" + "&exportFormat=xlsx"; 

    var result = UrlFetchApp.fetch(url, { 
     headers: { 
     'Authorization': 'Bearer ' + token 
     } 
    }); 


    var contents = result.getContent(); 

    MailApp.sendEmail("[email protected]",subject ,body, {attachments:[{fileName:colB_Data+".pdf", content:contents, mimeType:"application//pdf"}]}); 

}; 
+1

Линия, которая имеет var ssID, возвращает объект таблицы, а не идентификатор, поэтому мне кажется, что ему требуется getId(). Хотя я не вижу, где вы его используете. Я просто указал это, потому что предоставленный вами URL содержит строку SS_ID. https://docs.google.com/spreadsheets/d/SS_ID/export? – Cooper

+0

RPG: URL-адрес упомянутого сообщения о использовании GPF использует другую структуру URL, чем ваша, включая/feeds /, но ваш нет. –

ответ

1

Как упомянуто @cooper ранее, SSID не был должным образом добавляется к URL, а также есть несколько изменений, которые будут сделаны в URL и ваш fetchapp

//Send active sheet as email attachment 

    var ssID = SpreadsheetApp.getActiveSpreadsheet().getId(); 
    var sheetgId = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetId(); 
    var email = Session.getUser().getEmail(); 
    var subject = "Order no."; 
    var body = "Hello"; 


    var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" + "&gid="+sheetgId+ "&portrait=true" + "&exportFormat=pdf"; 


    var result = UrlFetchApp.fetch(url) 

    var contents = result.getContent(); 

    MailApp.sendEmail("[email protected]",subject ,body, {attachments:[{fileName:colB_Data+".pdf", content:contents, mimeType:"application//pdf"}]}); 

Вы посылаете HTTP GET напрямую на один и тот же диск, поэтому пользователь, я полагаю, регистрируется в учетной записи google и имеет доступ к электронной таблице, поэтому вам действительно не нужен токен. Во-вторых, вы забыли добавить переменные в параметры в URL режима экспорта, и я изменил формат экспорта в pdf.

+0

Работает, однако, файл, который прилагается, поврежден, не открывается. Что-то не так с тем, что отправлено? – RGP

Смежные вопросы