前提
ここに質問の内容を詳しく書いてください。
送付履歴一覧(Google Seets)から
自動で書類送付状(Google Doc)を作成するシステムを作っています。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
新たに追加記入した行のみ、スクリプトを実行させたい
トリガーの設定 19番目にあたるT列に”作成”と入力があった場合に、送付状作成を開始させたい。
発生している問題・エラーメッセージ
①実行を押すと、一覧表の最初の送付物データから最終行まで、実行のたびに全部の送付状が実行の度毎回作られてしまします、、、、、。
②トリガーを編集に設定したら、送付内容を記載している最中に送付状作成が自動で始まってしまい、作成された送付状が必要事項が入っていなかったです。
該当のソースコード
GAS
試したこと
ネット検索しても、分からずこちらに質問をさせていただきました。どうぞよろしくお願い致します。
やってほしいことだけを記載した丸投げの質問とのコメントを頂きました。
申し訳ありませんでした。
初めてコードを触ります。インターネットで解説を探しながらここまで作成したのですが、
かれこれ数日検索しておりますが私の知識不足もありこれだ!と思う解決方法が見つけられずにおります。
恥ずかしながら書いているものがどう動いているのか、数値を変えたりして確認、納得して進めている状態です。
現在、最終行の取得方法を見つけた為、
最終行を取得、その行に対して、下記のスクリプトが動いてくれればよいのではと考え、
下記スクリプトの中に取得した最終行の情報をそのように入れれば、
その行のみ実行してくれるのかを探しています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
以下、作成しているコード?です。
//テンプレートをコピーしスプレッドシートの単語に置換する
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 = 5; i < values.length; i++) {
setDocdata(values[i],basefile,destfolder)
console.log(values[i][ID_URL])
setdata.push(["",values[i][ID_URL]]) //バッファに要素を追加する
}
//setdata() "作成済み",URL をシートに反映させる
console.log(setdata)
sh.getRange(6, 20, values.length -5, 2).setValues(setdata)
}
// 0 1 2 3 4 5 6 7 8 9 10 19
//'担当者名','Date','集計月','Summary','自社/立替 返信用付','立替先社名','To','Remarks column 2','Remarks column 1','自社確認用/内容詳細/備忘録等','payee invoice number','送付状URL',
const ID_REQUESTER = 5 //依頼者・立替先下記社名
const ID_NAME = 6 //送付をする先の人の会社・名前
const ID_DOCUMENT2 = 7 //送付物の種類
const ID_DOCUMENT1 = 8 //送付の内容詳細
const ID_URL = 20 //URL
const ID_DATE = 21 // 文字変換した日付
function setDocdata(setdata, bfile, dfolder) {
//新しいファイル名
console.log(setdata[1])
const newfile = bfile.makeCopy(setdata[21]+""+setdata[5]+""+setdata[6], 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('{To}', setdata[ID_NAME])
basebody.replaceText('{立替先社名}', setdata[ID_REQUESTER])
basebody.replaceText('{Remarks column 2}', setdata[ID_DOCUMENT2])
basebody.replaceText('{Remarks column 1}', setdata[ID_DOCUMENT1])
setdata[ID_URL] = newurl //新しいURL

回答2件
あなたの回答
tips
プレビュー