AppSheetからの入力画像をスプレッドシートでプレビュー

以下のようにセルに入力されたファイルパスを利用して、隣のセルに画像のプレビューを表示する方法を紹介します。

まずは画像が保存されているフォルダーをドライブから探し、共有の設定を「リンクを知っている全員」に変更します。

以下のようなGASを記述します

ドライブのリンク`https://drive.google.com/uc?id=`にファイルIDをつけたリンクをImage関数の引数に渡します。

フォーム更新時をイベントの発動条件としてトリガーを追加します。

  1. function pathToImage() {
  2. let sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  3. let records=sheet.getDataRange().getValues();
  4. let filePath="";
  5. records.slice(1).forEach((record,index)=>{
  6. filePath=record[4];
  7. let fileName=filePath.split("/")[1];
  8. let folder=DriveApp.getFoldersByName("シート1_Images").next();
  9. let file=folder.getFilesByName(fileName).next();
  10. let fileID=file.getId();
  11. let imagePath=`https://drive.google.com/uc?id=${fileID}`;
  12. let cell=sheet.getRange(index+2,6);
  13. console.log(cell);
  14. cell.setFormula(`=Image("${imagePath}")`);
  15. })
  16. }
let cell=sheet.getRange(index+2,6);の6はF列を表しています。環境に応じて適宜書き換えてください。