前提・実現したいこと
Googleスプレッドシートで見積書を作成してもらい、
メールでPDFファイルを飛ばす仕組みを作りたいと考えています。
デバイスの操作があまり得意でない人のために、
スクリプトをボタンに登録してワンタッチで送る仕組みです。
発生している問題・エラーメッセージ
Exception: https://docs.google.com のリクエストに失敗しました(エラー: 401)。サーバー応答の一部: <HTML> <HEAD> <TITLE>Unauthorized</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Unauthorized</H1> <H2>Error 401</H2> </BODY> </HTML> (応答の全文を見るには muteHttpExceptions オプションを使用してください)
該当のソースコード
Google Apps Scriptでコーディングしています
function sendMail(){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var key = spreadsheet.getId();
var sheetName = spreadsheet.getSheetByName("見積計算書");
var gid = sheetName.getSheetId();
var token = ScriptApp.getOAuthToken();
var url = "https://docs.google.com/spreadsheets/d/" + key + "/export?gid=" + gid + "&format=pdf&portrait=true&size=A4&gridlines=false&fitw=true";
var customerStr = sheetName.getRange(2, 3).getValue();
//この行に問題があると考えています
var pdf = UrlFetchApp.fetch(url, {headers : {'Authorization': 'Bearer ' + token}}).getBlob().setName("見積計算書" + customerStr + ".pdf");
var to = "okinawa.vegetable@gmail.com";
var subject = "見積計算書"+customerStr;
var body ="正式な見積と発注をしてください";
GmailApp.sendEmail(to, subject, body, {attachments: pdf});
}
試したこと
スプレッドシートを作ったアカウントAと、
スクリプトを作ったアカウントBが違うので、
スプレッドシートのオーナーをアカウントB変更して同じにしたが
変化なし
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー