スプレッドシートの表をリンクさせたドキュメントをGASで自動更新し、PDF化したい

GASスクリプト初心者です。基本がまだ習得できておらず、ネットでの参考資料を見よう見まねで作成していて勉強中ですので何卒宜しくお願いいたします。

実現したいこと

スプレッドシートの表をリンクさせたドキュメントをGASで自動更新し、PDF化したい

前提

以下コードで、ドキュメントをPDF化し、指定フォルダに格納するところまでは実現できた。
PDF化する前に、リンクしたオブジェクトを全て更新させるGASに苦戦しています。

発生している問題・エラーメッセージ

以下のソースコードでPDF化し格納は出来ているが、リンクしたオブジェクトを更新させずに格納されてしまう(更新が実行されていない)

該当のソースコード

function savePdf(){ //PDFの保存先 //★★★フォルダーIDを入力してください★★★ let folderId = "格納したいフォルダID記載"; //アクティブなドキュメントを取得する let doc = DocumentApp.getActiveDocument(); //ドキュメントIDを取得する let docId = doc.getId(); const main = () => { DocumentApp .getActiveDocument() .forEach(s => { s.doc.forEach(c => c.refresh()) }) } //★★★PDFのファイル名を入力してください★★★ //※ポイント: ファイル名が重複しないようにしましょう let fileName = "テストドキュメント"; //関数createPdfを実行し、PDFを作成して保存する createPdf(folderId, docId, fileName); } //PDFを作成し指定したフォルダーに保存する関数 //以下3つの引数を指定する必要がある //1: フォルダーID (folderId) //2: ドキュメントID (docId) //3: ファイル名 (fileName) function createPdf(folderId, docId, fileName){ //PDFを作成するためのベースとなるURL let url = "https://docs.google.com/document/d/" + docId + "/export?&exportFormat=pdf&format=pdf"; //アクセストークンを取得する let token = ScriptApp.getOAuthToken(); //headersにアクセストークンを格納する let options = { headers: { 'Authorization': 'Bearer ' + token } }; //PDFを作成する let blob = UrlFetchApp.fetch(url, options).getBlob().setName(fileName + '.pdf'); //PDFの保存先フォルダー //フォルダーIDは引数のfolderIdを使用します let folder = DriveApp.getFolderById(folderId); //PDFを指定したフォルダに保存する folder.createFile(blob); }

試したこと

スライドグラフの自動更新をさせるコードを少しいじって
const main = () => {
SlidesApp
.getActivePresentation()
.getSlides()
.forEach(s => {
s.getSheetsCharts().forEach(c => c.refresh())
})
}
以下のコードに書き換えてみました。
const main = () => {
DocumentApp
.getActiveDocument()
.forEach(s => {
s.doc.forEach(c => c.refresh())
})
}

### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント