1

この素晴らしいリソースをありがとうございました。私はGoogleスクリプトを初めて使用し、非常に役に立ちました。

Googleフォーム情報を取得し、新しいスプレッドシートを作成し、そのデータを新しいスプレッドシートにインポートして計算を行い、チャートを作成し、そのシートのPDFをフォームユーザーにメールで送信するスクリプトを作成しようとしています.

近づいていると思ったのですが、問題が発生しました。データは新しいスプレッドシートにインポートされますが、電子メールの PDF にデータが表示されません。

いくつかの質問; PDF がデータを表示できるように、コードに変更を加えることはできますか? 私がやろうとしていることを達成するためのより良い、またはより簡単な方法はありますか?

ありがとう!!

//Template Info
  var docTemplate = "myssID";

  var docName = "MotionControlReport";

function formSubmitCreate(e) {

  //Variables

  var userOrientation = e.values[1];
  var userStroke = e.values[2];
  var userStrokeUnits = e.values[3];
  var userName = e.values[11];
  var userCompany = e.values[12];
  var userEmail = e.values[13];
  var userPhone = e.values[14];

  //Template Info
  var copyId = DocsList.getFileById(docTemplate).makeCopy(docName+' for '+userName).getId();
  var copyDoc = SpreadsheetApp.openById(copyId);
  var copyBody = copyDoc.getActiveSheet();

  copyBody.getRange(1, 1).setValue(userName);
  copyBody.getRange(1, 2).setValue(userCompany);
  copyBody.getRange(1, 3).setValue(userEmail);
  copyBody.getRange(1, 4).setValue(userPhone);
  copyBody.getRange(1, 5).setValue(userOrientation);
  copyBody.getRange(1, 6).setValue(userStroke);
  copyBody.getRange(2, 6).setValue(userStrokeUnits);

  //Save as PDF and send e-mail
  var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
  var subject = "Motion Control Report";
  var body = userName + ",  Thank you very much for using our online Linear Motion Sizing Tool.";
  MailApp.sendEmail(userEmail, subject, body, {htmlBody: body, attachments: pdf});
  //Deletes temporary Document
  DocsList.getFileById(copyId).setTrashed(true);
}
4

1 に答える 1

3

スプレッドシートをフラッシュするのを忘れており、データが PDF に変換される少し後にキャッシュから保存されます。私はあなたのコードを(フラッシュして)チェックしましたが、うまく機能し、フォームからPDFで正しいデータをメールで送信してくれました。

SpreadsheetApp().flush()

于 2012-11-28T15:41:37.847 に答える