🔗

【GAS】フォルダ内のGoogleフォームの共有リンクを一括で取得する

2024/01/13に公開

フォームを1個ずつ開いて共有リンク(短縮)を取得して……と何回も繰り返すのが大変だったのでGASで自動化してみました。

コード

const FOLDER_ID = "(ここにフォルダIDを入れる)";
const SHEET_ID = "(ここにシートIDを入れる)";
const SHEET_OBJ = SpreadsheetApp.openById(SHEET_ID);
const LOG_SHEET = SHEET_OBJ.getSheets()[0];

const main = () => {
  const files = DriveApp.getFolderById(FOLDER_ID).getFiles();
  let trial = 100; // 念のための上限
  while (files.hasNext()) {
    if (trial < 1) { break }
    const file = files.next();
    const name = file.getName();
    if (file.getMimeType() == MimeType.GOOGLE_FORMS) {
      // Googleフォームのみ処理
      const fm = FormApp.openById(file.getId());
      const title = fm.getTitle(); // フォームの題名
      const full = fm.getPublishedUrl(); // 共有用URL(フル)
      const short = fm.shortenFormUrl(full); // 短縮する
      LOG_SHEET.appendRow([new Date(), name, title, short]);
    }
    trial -= 1;
  }
}

実行イメージ

フォームのファイル名と題名が異なるケースもありえるので念のため両方を記録します。


順番がフォルダ上での表示順通りにならないのはご愛嬌

Discussion