【GAS】Googleドキュメントのファイル一覧をスプレッドシートに書き出す

参考
qiita.com

/** @OnlyCurrentDoc */
function outputFileListLink() {
  //フォルダIDを指定する
  var folder_id = "1K-Zig9uIKt9iH2XWQYe3nrngyzkyB3eA"; //URLの「~~folders/{この部分}」

  //フォルダ情報を取得する
  var folder = DriveApp.getFolderById(folder_id);
  //フォルダ情報からファイル一覧を取得する
  var files = folder.getFiles();

  var list = [];  //この変数のファイル名・URLが入っていきます
  //フォルダ内のファイル一覧を1件ずつ読み込む
  while(files.hasNext()) {
    //ファイル情報を1件読む
    var buff = files.next();
    //ファイル名取得
    var xlsName = buff.getName();
    //ファイル名の1文字目から"_"が最初に出てきた位置までの文字列を取得
    var nameIndex = xlsName.indexOf("_"); //何文字目に"_"が入っているか取得
    xlsName = xlsName.substring(0, nameIndex);  //1文字目から指定文字目までの文字列を取得

    //ファイルのURLを取得
    var xlsLink = buff.getUrl();
    //URLからダウンロード用のリンク文字列を作成
    xlsLink = xlsLink.replace("file/d/", "uc?export=download&id="); //文字を置換
    xlsLink = xlsLink.replace("/view?usp=drivesdk","")  //文字を置換
    xlsLink = "=HYPERLINK(\"" + xlsLink + "\")" //ハイパーリンクの関数を設定

    //ファイル名、URLを格納
    list.push([xlsName, xlsLink]);
  };

  // ファイルが0件なら処理終了
  if(list.length == 0) {
    return;
  }

  // 出力先シートを取得する
  var ss = SpreadsheetApp.getActive();  //アクティブになっているスプレッドシートを取得
  var sheet = ss.getSheetByName("シート2"); //シート2を取得
  // シートの内容をクリア
  sheet.clearContents();
  // 出力範囲を取得
  var rowIndex = 1; // The starting row of a range.
  var colIndex = 1; // The starting row of a column.
  range = sheet.getRange(
    rowIndex,      // 行始点位置
    colIndex,      // 列始点位置
    list.length,   // 行終点位置(ファイルの数を指定)
    list[0].length // 列終点位置(2(ファイルとURL)を指定)
  );

  // 対象の範囲にまとめて書き出します
  range.setValues(list);
}