書いてある通りなんですが、要素をひたすら every UI element で調べまくる、これで解決です。
例えば画像の状態の場合、開いているウインドウが window 1, そこに印刷のモーダルダイアログが出てますが、これは sheet 1 of window 1 となります。
PDF の部分ですが、これは menu button "PDF" で、画面の状態にするにはクリックしないといけません。
クリックする click menu button "PDF" と、メニューが表示され、選択可能になります。 click menu item "Save as PDF" of menu of menu button "PDF"
そうすると、さらにモーダルダイアログが出てきて、保存場所を選択できるんですが、これは sheet 1 of window 1 になるんです。ややこしい。
ここでは keystroke "g" using {command down, shift down} すると、フルパスが入力できるようになるので、パスを keystroke で入力した後に Save ボタンをクリックしてやると、問題なく保存されます。
ただし、ファイルが存在するややこしいので、事前に保存先の PDF は掃除しておきます。
というわけで、every UI element で調べまくる、という気づきがあり、なんとか解決することができました。
えらく話が脱線しましたが、アメリカのパレットは、40″ x 48″ なので、1,000 x 1,200mm といったところなので、LCC 3 の箱なら、煉瓦積みで 300 x 400 が 4 個 x 1 列、400 x 300 が 3 個 x 2 列で、10 個/段, ということになるんじゃないかなと思うわけです。
(function(){
l = [];
e = document.querySelectorAll('p.quantities_variation_title');
if (e) {
for (i = 0; i < e.length; ++i) {
l.push(e[i].textContent);
}
}
return l.join(';;');
})();
エラーの原因は、いくつかあって、STORES の方は、JPEG 以外にも、PNG などの形式が OK なんですが、ヤフー店は、JPEG か GIF ということになっているためです。
それ以前に、スクリプト自体が JPEG である前提でした。
set myNumImages to do JavaScript "document.querySelectorAll('li>img[src*=hearthandhome]').length"
if myNumImages > 3 then set myNumImages to 3
set myPath to do shell script "echo ~/Pictures/STORES/" & myItemId
try
do shell script "mkdir " & myPath
end try
do shell script "open " & myPath
repeat with myImageIndex from myNumImages to 1 by -1
set myImageFileName to do JavaScript "document.querySelectorAll('li>img[ng-src*=hearthandhome]')[" & myImageIndex - 1 & "].src.replace(/^.+[/]|_100x100/g,'')"
set myImagePath to myPath & "/" & myImageIndex & ".jepg"
set myImageURL to "https://f.stores.jp/_files/hearthandhome/" & myImageFileName
do shell script "/sw/bin/wget --no-check-certificate " & myImageURL & " -O " & myImagePath
if myImageFileName ends with ".jpeg" is false then
do shell script "sips -s format jpeg " & myImagePath
end if
end repeat
tell application "Finder"
set myText to the clipboard
end tell
tell application "Safari"
set myClickPostDocument to 0
set myNumOfDocuments to count every document
repeat with myDocumentNum from 1 to myNumOfDocuments
set theDocumentTitle to do JavaScript "document.title" in document myDocumentNum
if theDocumentTitle contains "新規発送" then
set myClickPostDocument to myDocumentNum
exit repeat
end if
end repeat
if myClickPostDocument is 0 then
say "click post document was not found"
return
end if
tell application "Finder" to set myClip to the clipboard
set buf to AppleScript's text item delimiters
set AppleScript's text item delimiters to " "
set myData to every text item of myClip
set AppleScript's text item delimiters to buf
set myName to item 4 of myData
set myZip to item 67 of myData
set myAddr to item 68 of myData
if 0 < (length of (item 69 of myData)) then set myAddr to myAddr & item 69 of myData
tell document myClickPostDocument
do JavaScript "
document.querySelector('div.edit_panel input[name$=id39]').value='おふだ';
document.querySelector('div.edit_panel input[name$=no_missive]').checked=true;
document.querySelector('div.edit_panel input[name$=checked_pack_size]').checked=true;
myZip = '" & myZip & "';
document.querySelector('div.edit_panel input[name$=zip1]').value = myZip.substr(0,3);
document.querySelector('div.edit_panel input[name$=zip2]').value = myZip.substr(4,4);
myAddr = '" & myAddr & "'.replace(/[!-~]/g, function(s) {
return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);
});
myAddr = myAddr.replace(/^愛媛県/,'');
document.querySelector('div.edit_panel textarea[name$=receiver_address]').value = myAddr;
myName = '" & myName & "';
document.querySelector('div.edit_panel input[name$=receiver_name]').value = myName;
"
end tell
end tell