ご訪問ありがとうございます。
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ドキュメントにリンク付きでデータを差し込む
コメント