🔗
【GAS】フォルダ内のGoogleフォームの共有リンクを一括で取得する
フォームを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