実現したいこと
GASで、Googleドライブ上にある既存の画像を更新するにはどうしたらよいでしょうか。
画像更新といってもスクリプトで絵を修正するわけではありません。画像はGoogleスプレッドシートのグラフで、docs.google.com/spreadsheets/…&format=image で公開するのではなくpngで保存しています。Twitterに画像として公開するためです。
スプレッドシートの中でデータが追加されグラフが変わったらドライブに保存されたpng画像も更新したい、ということです。
同名データを削除しあらためてその名で新規保存するという方法では実現できました。
しかしこれではエレガントでないので、ファイルIDを使って更新したいです。
成功
とはいえ、美しくない
1var filename = "chart.png"; 2var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3var sheet = spreadsheet.getSheetByName("xxx"); 4var chart = sheet.getCharts()[0]; 5var blobImg = chart.getBlob().getAs("image/png").setName(filename); 6 7// 同名データを削除し、新規保存する 8var folderID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 9var folder = DriveApp.getFolderById(folderID); 10var files = folder.getFilesByName(filename); 11if (files.hasNext()) { 12 folder.removeFile(files.next()); 13} 14folder.createFile(blobImg);
失敗
保存(更新)されたファイルは「Blob」という内容のテキストになってしまう
テキストの更新ならこれが正しいやり方
1// 前半は省略 2var fileID = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"; 3var file = DriveApp.getFileById(fileID); 4file.setContent(blobImg);

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/26 11:07
2020/01/29 07:39