8

google-apps-scriptを短時間学習するのを手伝ってください。スプレッドシートに保存されているデータからURLを生成して、リモートサイトからファイルをダウンロードしたい。

たとえば、私は2つのパラメータを持っています:

Cell1 = val1, val2, ... valN
Cell2 = val21, val22, ...  val2N

文字列をセルデータから配列に分割し、URLを生成します。例:http://mysite.com/files/file.val1.val22.zip このリンクからファイルをダウンロードする必要があるよりも...

このプロセスを自動的に実行できますか?

4

3 に答える 3

7

このサンプル関数は、zipファイルを取得し、Googleドライブのフォルダ「StackOverflow」に配置します。この要点から、より完全なバージョンをダウンロードすることもできます。

function getFile(fileURL) {
  // see https://developers.google.com/apps-script/class_urlfetchapp
  var response = UrlFetchApp.fetch(fileURL);
  var fileBlob = response.getBlob()
  var folder = DocsList.getFolder('StackOverflow');
  var result = folder.createFile(fileBlob);
  debugger;  // Stop to observe if in debugger
}

例えば:

getFile( "http://mysite.com/files/file.val1.val22.zip" );

apps-scriptからPCのリソース(ファイルシステムなど)にアクセスできないため、それ自体をダウンロードすることはできないことに注意してください。ファイルはまだ「クラウド」にあります...この場合、ファイルはそれがあったWebサイトからGoogleドライブにコピーされています。ただし、ドライブアプリを実行している場合は、ファイルがPCに同期されます。

于 2013-01-29T01:28:27.803 に答える
1

はい、できます。
以下のコードがあなたの問題を解決できることを願っています:

//Declare function
function downloadFile() {
  //Getting url,existing name and new name for image from the sheet in 
  //variable url, name and new_name respectively
  var sh = SpreadsheetApp.getActiveSheet();
  var row = sh.getLastRow();
  Logger.log(row);
  for (var i = 2; i <= row; i++) {

    var url = sh.getRange(i, 10).getValue();
    Logger.log(url);
    var name = sh.getRange(i, 13).getValue();
    var new_name = sh.getRange(i, 4).getValue();
    //Creating authentication token for downloading image, it may not be //required if image can be downloaded without login into
    var user = "***************";
    var password = "************";
    var headers = {
      "Accept": "application/xml",
      "Content-Type": "application/xml",
      "Authorization": "Basic " + Utilities.base64Encode(user + ":" + password)
    };
    //defining method to download file
    var options = {
      "method": "get",
      "headers": headers
    };
    //Getting folder name where to store downloaded image
    var folders = DriveApp.getFoldersByName('test');
    while (folders.hasNext()) {
      var folder = folders.next();
      Logger.log(folder.getName());
    }
    //Getting response on hit of url using downloading method defined //earlier storing in Blob
    var response = UrlFetchApp.fetch(url, options).getBlob();
    //Creating image in folder defined with response in blob and logging same file //in log to check, if required
    var file = folder.createFile(response);
    Logger.log(file);

    //renaming image
    var images = folder.getFiles();
    while (images.hasNext()) {
      var image = images.next();
      file.setName(new_name);
      Logger.log(image.getName());
    }
  }
}
//Hope you get it now
于 2017-05-18T19:33:39.203 に答える
1

それは私のために働いた。

function downloadFile() {
  var url = "https://raw.githubusercontent.com/hoat23/VisionArtificialAndImageProcessing/master/bin/utils_imgprocessing.py"
  Logger.log(url);
  var response = UrlFetchApp.fetch(url);
  var text = response.getContentText()
  var newFile = DriveApp.createFile('testfilegoogle.txt',text);
  debugger;  // Stop to observe if in debugger
}
//Hope you get it now
于 2020-07-18T07:25:22.030 に答える