【GAS】Googleドキュメントに指定のファイル名でデータを差し込む

応用

GAS応用の一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

  • Googleドキュメントの定型文にGoogleスプレッドシートのデータをコピペで差し込むことができます。
  • 指定したファイル名に出力することができます。

なので、サクッとマスターして

と答えてあげてください。

 

ご質問

 

ファイル名を任意に変更したいとのことです。

では、やってみましょう。

 

 

 

動画はこちら

シートはこちら

*クリックすることでシートが開きます。(コピーしてお使いください)

スクリプト

//テンプレートをコピーしスプレッドシートの単語に置換する
function MakeDocFromTemplate() {



  const SH_NAME = "購入一覧"  //読み込みシート名
  const BASE_URI = "★★★★★★★"         //★元となるファイルのURI
  const DEST_FOLDER = "★★★★★★★★★★★★"    //★コピー先フォルダのURI



  const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SH_NAME)



  //元となるファイルを取得
  const basefile = DriveApp.getFileById(BASE_URI)



  //コピー先のフォルダ
  const destfolder = DriveApp.getFolderById(DEST_FOLDER)



  const values = sh.getDataRange().getValues()



  // console.log(values[0])



  let setdata = []    //ステータスとURL用のバッファ



  for (i = 1; i < values.length; i++) {
    if (values[i][ID_CHECK]) {  //チェックボックスがon
      setDocdata(values[i], basefile, destfolder)
      console.log(values[i][ID_URL])
      setdata.push(["作成済み", values[i][ID_URL]])  //バッファに要素を追加する
    }
    else {
      setdata.push(["-----", ""])  //バッファに要素を追加する
    }



  }
  console.log(setdata)
  sh.getRange(2,ID_STATUS +1  , values.length - 1, 2).setValues(setdata)
}



// 0                1      2         3         4         5       6         7       8
// 'チェックボックス','', '名前', '郵便番号', '住所', '受注番号', '商品名', 'ステータス', 'URL'
const ID_CHECK = 0  //チェックボックス
const ID_NAME = 2  //名前
const ID_ZIPCODE = 3  //郵便番号
const ID_ADDRESS = 4  //住所
const ID_ORDERNO = 5  //受注番号
const ID_PRODUCTNAME = 6  //商品名
const ID_STATUS = 7  //ステータス
const ID_URL = 8  //URL
const ID_FNAME = 9  //★出力するファイル名



function setDocdata(setdata, bfile, dfolder) {



  //新しいファイル名
  console.log(setdata[ID_FNAME])



  const newfile = bfile.makeCopy(setdata[ID_FNAME], dfolder)



  const newid = newfile.getId()
  const newurl = newfile.getUrl()



  console.log(newurl)




  const basedoc = DocumentApp.openById(newid)



  console.log(basedoc.getName())



  const basebody = basedoc.getBody()



  //文字列の置換
  //'', '名前', '郵便番号', '住所', '受注番号', '商品名', 'ステータス', 'URL'
  basebody.replaceText('{名前}', setdata[ID_NAME])
  basebody.replaceText('{郵便番号}', setdata[ID_ZIPCODE])
  basebody.replaceText('{住所}', setdata[ID_ADDRESS])
  basebody.replaceText('{受注番号}', setdata[ID_ORDERNO])
  basebody.replaceText('{商品名}', setdata[ID_PRODUCTNAME])



  setdata[ID_URL] = newurl //新しいURL



}

ポイント

今回は、意外と簡単でしたね。

元の作りが良いので、スプレッドシート上に出力するファイル名の列を追加すればOKです。

GAS内でファイル名を生成しても良いのですが、Javascriptでの日付の操作が意外と
めんどいのとスプレッドシート上でできることは、スプレッドシート内でやった方が
後々楽なので、スプレッドシート上でファイル名を指定しています。

他にもいろいろと改善できると思いますので、ぜひチャレンジしてみてください。

 

 

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS】Googleドキュメントにリンク付きでデータを差し込む
  • Googleドキュメントでテキストにアクセスする方法がわかります。
  • Googleドキュメントで特定の範囲に対してリンク付きにする方法がわかります。
  • GAS応用の一覧

    コメント

    タイトルとURLをコピーしました