LoginSignup
0
0

More than 1 year has passed since last update.

Googleフォームの回答に応じて服薬情報提供書に転記

Posted at
function myFunction() {
  const sheetId = 'ここにスプレッドシートIDを記入'; //スプレッドシートID
  const thisSpreadSheet = SpreadsheetApp.openById(sheetId); //スプレッドシートを開く
  const answerSheet = thisSpreadSheet.getSheetByName("フォームの回答 1"); //「フォームの回答1」シートを開く
  const reportSheet = thisSpreadSheet.getSheetByName("服薬情報提供書"); //「服薬情報提供書」シートを開く
  const reportSheetId = "ここにシートIDを記入";  //「服薬情報提供書」シートのシートID
  const pharmacistMail ="ここにメールアドレスを記入";  //送信先のメールアドレス
  const folder = DriveApp.getFolderById('ここに保存先のドライブIDを記入')  //PDF保存先のフォルダID
  const lastRow = answerSheet.getLastRow(); //回答の最終行を取得(最新の回答の行)
  const lastRowData = answerSheet.getRange(lastRow,1,1,8).getValues();  //最終行の値を取得(最新の回答を取得)
  const timeStamp =  Utilities.formatDate(lastRowData[0][0],'JST','yyyy/MM/dd');  //タイムスタンプを年月日で取得
  const patientName = lastRowData[0][1];  //患者氏名を取得
  const patientMail = lastRowData[0][2];  //患者メールアドレスを取得
  const patientTel = lastRowData[0][3]; //患者電話番号を取得
  const patientClaim = lastRowData[0][4]; //患者の要望・質問を取得
  const reportWill = lastRowData[0][5]; //医師への報告希望の有無を取得
  const patientBirthDay = Utilities.formatDate(lastRowData[0][6],'JST','yyyy/MM/dd'); //患者の生年月日を取得
  const patientSex = lastRowData[0][7]; //患者の性別を取得

  //患者が医師への報告を希望する場合は、「服薬情報提供書」患者の情報を転機してPDF化して、薬剤師へメールします。
  if(reportWill == '希望します'){
    reportSheet.getRange(17,1).setValue("患者氏名  " + patientName +" 様");
    reportSheet.getRange(18,1).setValue("電話番号  " + patientTel);
    reportSheet.getRange(25,1).setValue(patientClaim + "\n" + timeStamp);   

    switch(patientSex){
      case "男性":
      reportSheet.getRange(17,2).setValue("性別:男性  生年月日:" + patientBirthDay);break;
      case "女性":
      reportSheet.getRange(17,2).setValue("性別:女性  生年月日:" + patientBirthDay);break;
      case "回答しない":
      reportSheet.getRange(17,2).setValue(" 生年月日:" + patientBirthDay);break;
      default: break;
    }

    SpreadsheetApp.flush();

    var url = 'https://docs.google.com/spreadsheets/d/SSID/export?'.replace('SSID', sheetId);
    var opts = {
      exportFormat: 'pdf',
      format:       'pdf',
      size:         'A4',
      portrait:     'true',
      fitw:         'true',
      sheetnames:   'false',
      printtitle:   'false',
      pagenumbers:  'false',
      gridlines:    'false', // 忘れがちですがここをfalseにしないと薄い罫線が入ってしまいます。
      fzr:          'false',
      gid:          reportSheetId
    };
    var url_ext = [];
    for( optName in opts ){
     url_ext.push( optName + '=' + opts[optName] );
    }
    var options = url_ext.join('&');
    var token = ScriptApp.getOAuthToken();
    var response = UrlFetchApp.fetch(url + options, {
      headers: {
      'Authorization': 'Bearer ' +  token
      }
    });
    var blob = response.getBlob().setName(timeStamp+patientName+'様情報提供書.pdf');  
    folder.createFile(blob);

   GmailApp.sendEmail(
        pharmacistMail,
        '報告希望の情報が出されました',//件名です。
        '添付ファイルをご確認下さい。このメールは自動送信です。', //本文になります。
        {attachments: [blob]}
        );

  }else{
    GmailApp.sendEmail(
        pharmacistMail,
        '患者様より情報が寄せられました',//件名です。
        '回答をご確認ください。', //本文になります。
        );
  }
  
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0