Q&A
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- imputBoxで取得した情報をプログラムの処理の中で指定されたセルに反映させたい。(=PDF化処理される前に反映させたい)
前提
ここに質問の内容を詳しく書いてください。
(例)
GASでデータ保存用にスプレッドシートのファイルをPDF化してフォルダに保存するシステムを作っています。
その際にimputBoxを用いて担当者氏名を入力後、その氏名をスプレッドシートに反映させて後にPDF化する処理を構築したはずなのですが、なぜか氏名が反映されないままPDF化の処理が先に実行されてしまいます。
発生している問題・エラーメッセージ
特にエラーにはなっていませんが何が問題かわからない状況です。。。
該当のソースコード
function Manual_CreatePdf_XXX() { var popUp = Browser.msgBox("XXX保存","XXXを保存(PDF形式)しますか?\\n間違って起動した場合、キャンセルをクリックしてください。",Browser.Buttons.OK_CANCEL); if(popUp == "cancel"){ Browser.msgBox("スクリプトを終了します。\\n保存作業をキャンセルしました。"); return; } else { var ShiftManagerName = Browser.inputBox("責任者氏名","本日の責任者の氏名を入力して下さい。",Browser.Buttons.OK_CANCEL); if(ShiftManagerName == "cancel"){ Browser.msgBox("スクリプトを終了します。\\n保存作業をキャンセルしました。"); return; } else { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(sheetName); var range = sheet.getRange(2, 19); range.setValue(ShiftManagerName); var ssId = ss.getId(); var shId = sheet.getSheetId(); var token = ScriptApp.getOAuthToken(); var date = new Date(); var today = Utilities.formatDate(date, "Asia/Tokyo", "yyyyMMdd_HHmmss"); var day = date.getDate(); date.setDate(day-1); var yesterday = Utilities.formatDate(date, "Asia/Tokyo", "yyyyMMdd_HHmmss"); var baseUrl = "https://docs.google.com/spreadsheets/d/" + ssId + "/export?gid=" + shId; var pdfOptions = "&exportFormat=pdf&format=pdf" + "&size=A4" + "&portrait=true" + "&fitw=true" + "&top_margin=0.30" + "&right_margin=0.30" + "&bottom_margin=0.30" + "&left_margin=0.30" + "&horizontal_alignment=CENTER" + "&vertical_alignment=TOP" + "&printtitle=false" + "&sheetnames=false" + "&sheetnames==true" + "¬e=false" + "&pagenum=RIGHT" + "&printnotes=false" var url = baseUrl + pdfOptions; var options = {headers: {'Authorization': 'Bearer ' + token}}; var blob = UrlFetchApp.fetch(url, options).getBlob() .setName(FileName + "_" + sheetName + "_" + yesterday + ".pdf"); var folder = DriveApp.getFolderById(FolderId_XXX); folder.createFile(blob); Logger.log("PDF(XXX)が作成されました"); var staySecond = 5 Utilities.sleep(staySecond * 1000); Browser.msgBox("指定のフォルダにXXXのPDFを作成しました。\\n指定フォルダ内にデータが保存されていることを確認して下さい。") // 完了通知 range.clearContent(); } } }
試したこと
・プログラム自体は正常に動作しているのにデータ内の書き込みの処理が遅いだけかと思い「Utilities.sleep(staySecond * 1000); 」をsetvalueの下の行に挿入してみたが変化なし。
・imputBoxをui.promptで作成したプログラムに変更して実施。結果変化なし。
・それぞれを別のfunctionとして切り分けて別のfunction内で同時実行してみたが結果変化なし。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/03/04 16:02