質問: '&access_token=' + ScriptApp.getOAuthToken(); return UrlFetchApp.fetch(url+wkToken).getBlob(); } ``` ### index.html(JavaScript部/共通) ``` ```
回答: 確かgoogle.script.runを使ってGAS側から直接blobをHTML側へ送ることはできなかったように記憶しています。そのため、回避策の一つとして、バイト配列を使って送ります。もちろん、base64に変換して送ることも可能です。修正したスクリプトは次の通りです。 ### GAS側 ``` function ProcFileDownload(formObject) { var folderName = 'フォルダ名'; var fileName = 'ファイル名'; //ファイル名からフォルダIDとファイルIDを取得 var folderId = DriveApp.getFoldersByName(folderName).next().getId(); var fileId = DriveApp.getFolderById(folderId).getFilesByName(fileName).next() var url = fileId.getDownloadUrl(); var wkToken = '&access_token=' + ScriptApp.getOAuthToken(); return UrlFetchApp.fetch(url+wkToken).getContent(); // ここを修正しています。 } ``` ### HTML側 ``` ``` ### 注意点 * `getContent()`メソッドは[]byteを返します。 * `var blob = new Blob([arr.buffer]);`へ`{type: mimeType}`を追加する必要があるかもしれません。サンプルのためここでは省略しています。mimeTypeが必要な場合は、GAS側か送ることも可能です。 * GAS側スクリプトでは`formObject`は使用されていないようですが、サンプルスクリプトのため省略しているのかと考えました。 ### 参考 * getContent())