Blog

multipart/form-dataのファイルをGASから送信する

GASで外部にファイルを送るのに手こずったのにメモ程度ですが残しておきます。

2021/08/16
#GAS

GAS でファイルを送るには「multipart/form-data」 ファイルを送るには「multipart/form-data」を使うらしい。

とても苦戦したのでのせておきます。

ソースコード

function uploadAttachment() {
  var boundary = 'boundary'
  var file = DriveApp //DriveApp obj
  var data = file.getBlob().getDataAsString()

  // PostDataフォーマット作成
  var requestBody = Utilities.newBlob(
    '--' +
      boundary +
      '\r\n' +
      'Content-Disposition: form-data; name="file"; filename=' +
      file.getName() +
      '\r\n' +
      'Content-Type: application/octet-stream \r\n\r\n' +
      '--' +
      boundary +
      '\r\n' +
      data +
      '\r\n' +
      '--' +
      boundary +
      '--\r\n'
  )
  var request = UrlFetchApp.fetch(url, {
    contentType: 'multipart/form-data; boundary=' + boundary,
    method: 'post',
    payload: requestBody,
    muteHttpExceptions: true,
  })
  var responseJson = JSON.parse(request.getContentText())

  return responseJson
}