GASでグーグルスプレッドシートに自動で作成した空のドキュメントを結びつけて記事の管理を効率化した話。

目次

はじめに

複数のサイトを運営していると、記事の管理に困るときがあります。

それも依頼して作成してもらっている記事があると余計に大変です。

そこで、スプレッドシートの行ごとにドキュメントを新規作成し、そのurlを張り付けるという風に運用したいなと思いました。

スプレッドシートのイメージ

ドキュメントのイメージ

テンプレートに書かれたものがコピーされて、指定されたタイトルになります。

実際のコード

いきなりですが、実際のコードを貼ります。

自分の好みに合わせて変えていただけると幸いです。

function createDocumentsAndLink() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const folder = DriveApp.getFoldersByName("ドキュメント管理用フォルダ").next();
  const templateFiles = DriveApp.getFilesByName("template");

  if (!templateFiles.hasNext()) {
    throw new Error("Template file not found.");
  }

  const templateFile = templateFiles.next();

//50記事にしていますが、ご自身の環境に合わせてください。
  for (let row = 1; row <= 50; row++) {
    const titleCell = sheet.getRange(row, 1); //A列を指定
    const urlCell = sheet.getRange(row, 2); //B列を指定
    let title = titleCell.getValue();

    // タイトルが空の場合、「タイトル未定+行番号」を使用
    if (title === '') {
      title = "タイトル未定" + row;
    }

    // URLセルが空の場合のみ新しいドキュメントを作成
    if (urlCell.getValue() === '') {
      const newDocFile = templateFile.makeCopy(title, folder);
      const url = DocumentApp.openById(newDocFile.getId()).getUrl();

      // URLをスプレッドシートに記録
      urlCell.setValue(url);
    }

  }
}

利用方法

STEP
グーグルドライブの中に保管用のディレクトリを作成

コードの中には「ドキュメント管理用フォルダ」という名前にしていますが、お好みの名前に変えてください。

STEP
テンプレートとなるドキュメントを作成

コード中では「template」にしています。こちらも、お好みに合わせて変えてください。

また、ファイル名が重複する場合は正しく動作しない場合があるので他のファイルとかぶりがないようにお願いします。

STEP
スクリプトをスプレッドシートの拡張機能>Apps Scriptに貼り付け。

張り付けた後は上記のファイル名、ディレクトリ名に注意してください。

また、行数や列番号もご自身のものに合わせてください。

STEP
保存したのちに実行

実行ボタンから実行しましょう。

権限について確認を求められるかと思いますので、承認して進めてください。

注意

GASは実行時間が長すぎたり、同じ関数を繰り返し利用するとエラーが出て処理が止まります。

あまりに多すぎるデータの場合は、別の手段を検討するか、コツコツ日を分けてやってください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次