概要

https://hogehoge/image.png

という画像のURLがわかっていて、それをファイルとしてGoogleドライブの好きなフォルダにアップロードできます

動画

フォルダIDはGoogleドライブのURLが下記の場合、

https://drive.google.com/drive/u/0/folders/hogehoge

hogehoge部分です

コードサンプル

一行ごとに処理、シートに反映するを実現するためにsheet.getRange(1, 1, 1, 1).getValues();しております。

他の方法があれば教えてください!

function download() {
  colorReset()
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const rows = sheet.getLastRow() - 1;
  const datas = sheet.getRange(2, 1, rows, 4).getValues();
  datas.forEach(function (data, index) {
    sheet.getRange(1, 1, 1, 1).getValues();
    colorSet("#00ffaa", index, "ダウンロード中")
    sheet.getRange(1, 1, 1, 1).getValues();
    const url = data[0];
    const folder = DriveApp.getFolderById(data[3]);
    const option = {
      method: "get"
    }
    const response = UrlFetchApp.fetch(url, option);
    const blob = response.getBlob();
    let newFile = folder.createFile(blob);
    newFile.setName(data[1] + data[2]);
    colorSet("#ee00aa", index, "完了")
  });
}

function colorReset() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const rows = sheet.getLastRow();
  sheet.getRange(1, 1, rows, 4).setBackground("#ffffff")
  sheet.getRange(2, 5, rows - 1, 1).setValue("準備中")
}

function colorSet(color, index, text) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  sheet.getRange(index + 2, 1, 1, 4).setBackground(color)
  sheet.getRange(index + 2, 5, 1, 1).setValue(text)
}
//起動時にメニューを手動項目で追加する
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu("ダウンロードはこちら").addItem("ダウンロード", "download").addItem("色をリセット", "colorReset").addToUi();
}

投稿者プロフィール

がんちゃん